在 Raspberry Pi 或类似设备上使用 FFMpeg

在 Raspberry Pi 或类似设备上使用 FFMpeg

我正在构建一个将音频流式传输到 Icecast 服务器的应用程序。

这是我当前实际发送音频的命令。

nohup ffmpeg -f alsa -ac $CHANNELS -i hw:0 -codec libmp3lame -ab $BITRATE -ar 44100 -nostats -content_type 'audio/mpeg' -f mp3 icecast://$USERNAME:$PASSWORD@$ICECASTSERVER:$ICECASTSERVERPORT/$MOUNTPOINT &> /tmp/stl-app/icecast-source.log &

当我使用 2 个通道的源(即左右立体声)时,编码器无法跟上。 ffmpeg 使用率为 100%,并且流严重卡顿。我可以将声卡换成只有一个通道输入、麦克风的 USB 卡,并且工作正常。

我意识到这可能是因为我正在测试的 pi 无法对 mp3 进行立体声实时编码然后进行流式传输。所以我的问题是,我可以做些什么来使其在树莓派 pi3b+ 上工作吗?或者我只是仅限于该设备上的一个通道,而对于立体声编码,我需要升级到其他东西。

我可以使用 alsa 录制音频,然后将其传输到 ffmpeg,但它会带来 4-5 秒的延迟。我想避免这种情况。

我尝试过提高比特率、降低采样率、更改编解码器等。有点不知所措。

尽我所能降低成本,但你永远不知道,我可能会错过一些东西。

我有一个 RPi4 可以测试,但显然它更贵。是否有具有我需要的处理器能力的 SBC?

答案1

事实证明,我使用的是通过 GPIO 连接的音频捕获设备,但显然速度不够快,无法处理两个流的音频。当我改用高端 USB 捕获 ADC 时,效果非常好。

相关内容