您如何构建 Pion mediadevices webrtc 示例?

How do you build the Pion mediadevices webrtc example?

我正在查看 Pion Mediadevices 并尝试从我的 windows 计算机交叉编译 rasperry pi 零的 webrtc 示例。但是,当我尝试构建示例时,我从 Windows 命令提示符中得到了这些错误:

    # github.com/pion/mediadevices/pkg/codec/mmal
..\..\pkg\codec\mmal\params.go:30:9: undefined: newEncoder
# github.com/pion/mediadevices/pkg/driver/microphone
..\..\pkg\driver\microphone\microphone.go:27:10: undefined: malgo.AllocatedContext
..\..\pkg\driver\microphone\microphone.go:34:2: undefined: malgo.DeviceInfo
..\..\pkg\driver\microphone\microphone.go:40:13: undefined: malgo.InitContext
..\..\pkg\driver\microphone\microphone.go:40:36: undefined: malgo.ContextConfig
..\..\pkg\driver\microphone\microphone.go:78:25: undefined: malgo.DeviceInfo

另外,因为该程序是针对 pi 零的,所以我将导入部分编辑为具有“github.com/pion/mediadevices/pkg/codec/mmal”,并注释掉了 x264 导入。 构建此示例的正确方法是什么?

编辑:经过进一步调查,我发现上面的错误信息:

 ..\..\pkg\codec\mmal\params.go:30:9: undefined: newEncoder

与函数 newEncoder 的调用相关,该函数在单独的 go 文件 mmal.go 中声明,与 params.go 在同一文件夹中。这两个文件在导入之前在顶部都有 package mmal,它们所在的文件夹也称为 mmal。是否有任何问题导致 params.go 无法查看该功能?

mediadevices 目前使用 cgo 来让我们访问 camera/microphone 和编解码器。在 cgo 中交叉编译是可能的,但您很可能需要自己将 mmal 编解码器交叉编译为静态库,但这需要访问源代码。

不幸的是,mmal 不是开源库。因此,剩下的唯一选择是在 raspberry pi 上编译库,因为 mmal 应该已经安装在您的系统上。

注意:我是媒体设备作者。