![Ffmpeg 和噪声使连接保持活动](https://linux22.com/image/1621652/Ffmpeg%20%E5%92%8C%E5%99%AA%E5%A3%B0%E4%BD%BF%E8%BF%9E%E6%8E%A5%E4%BF%9D%E6%8C%81%E6%B4%BB%E5%8A%A8.png)
我正在尝试制作 SDR 扫描仪来向网络广播信号。
RTL_FM -> FFMPEG -> Icecast2。
但在暂停时流媒体终止,据我所知,没有使用 Ffmpeg 函数使其保持活动的选项。因此,我决定添加空输入并将其与 RTL 信号混合以使其保持在线:
rtl_fm -f 104M -f 102.8 -f ... -M fm -s 180s -r 44.1k | ffmpeg -f lavfi -i anullsrc=r=44.1k:cl=mono -f s16le -ar 44.1k -ac 1 -i pipe:0 -filter_complex amix=inputs=2:duration=longest -acodec libmp3lame -b:a 92k -ar 44.1k -content_type audio/mpeg icecast://source:pass@localhost:8000/audio.mp3
而且它不起作用!RTL 信号离线时没有广播。为什么?如果我使用 anoisesrc 而不是 anullsrc,结果是一样的。
这按预期工作:
ffmpeg -f lavfi -i anullsrc=r=44.1k:cl=mono -acodec libvorbis -b:a 92k -ar 44.1k -content_type audio/ogg icecast://source:pass@localhost:8000/vorbis.ogg
除了 CPU 负载为 100% 之外。
怎么了?也许有更合适的解决方案来保持流的活跃? Ubuntu-18.04.4
答案1
使用另一个版本解决问题rtl_fm从这里git-hub
只需添加-E pad
,并在启用静噪时用零填充输出