#c #go #webrtc #raspberry-pi-zero
# #c #Вперед #webrtc #raspberry-pi-zero
Вопрос:
Я проверял Pion Mediadevices и пытался скомпилировать пример webrtc для rasperry pi zero со своего компьютера под управлением Windows. Однако, когда я пытаюсь создать пример, я получаю эти ошибки из командной строки Windows:
# github.com/pion/mediadevices/pkg/codec/mmal
....pkgcodecmmalparams.go:30:9: undefined: newEncoder
# github.com/pion/mediadevices/pkg/driver/microphone
....pkgdrivermicrophonemicrophone.go:27:10: undefined: malgo.AllocatedContext
....pkgdrivermicrophonemicrophone.go:34:2: undefined: malgo.DeviceInfo
....pkgdrivermicrophonemicrophone.go:40:13: undefined: malgo.InitContext
....pkgdrivermicrophonemicrophone.go:40:36: undefined: malgo.ContextConfig
....pkgdrivermicrophonemicrophone.go:78:25: undefined: malgo.DeviceInfo
Кроме того, поскольку программа предназначена для pi zero, я отредактировал раздел импорта, чтобы иметь «github.com/pion/mediadevices/pkg/codec/mmal » и прокомментировал импорт x264.
Как правильно построить этот пример?
Редактировать: после дальнейшего расследования я обнаружил, что приведенное выше сообщение об ошибке:
....pkgcodecmmalparams.go:30:9: undefined: newEncoder
соответствует вызову функции newEncoder, которая объявлена в отдельном файле go, mmal.go, в той же папке, что и params.go. Оба этих файла package mmal
находятся вверху перед их импортом, а папка, в которой они содержатся, также называется mmal. Есть ли какие-либо проблемы, из-за которых функция недоступна для просмотра в params.go?
Комментарии:
1. Я помечаю этот C как явно проблему CGO, для всех, кто еще может захотеть попасть на это минное поле github.com/pion/mediadevices/tree/master/pkg/codec/mmal
Ответ №1:
в настоящее время mediadevices использует cgo, чтобы предоставить нам доступ к камере / микрофону и кодекам. Кросс-компиляция в cgo возможна, но вам, скорее всего, потребуется самостоятельно скомпилировать кодек mmal в виде статической библиотеки, но для этого требуется доступ к исходному коду.
К сожалению, mmal не является библиотекой с открытым исходным кодом. Поэтому единственный оставшийся вариант — скомпилировать библиотеку на Raspberry pi, поскольку mmal уже должен быть установлен в вашей системе.
Примечание: я автор mediadevices 😃.
Комментарии:
1. Спасибо за ответ, который имеет смысл! (и спасибо за api!)