我有一个 FFMPEG 命令,它能够将 RTMP 实时提要发送到 2 个不同的 icecast 广播电台:
命令 1(在产品中;2 个中的 1 个失败):
/home/ubuntu/encoder/bin/ffmpeg -i rtmp://127.0.0.1:1935/app/live -vn -c:a mp3 -ac 2 -b:a 64k -ar 44100 -f tee -map 0 "[f=mp3:onfail=ignore]icecast://source:password@liquidsoap:8000/live|[f=mp3:onfail=ignore]icecast://source:password@fluoz.zeno.fm:80/live"
在命令 1 上运行时,我会收到以下 FFMPEG 错误:
[tee @ 0x562fffd24bc0] Slave '[f=mp3:onfail=ignore]icecast://source:password@fluoz.zeno.fm:80/live': error opening: End of file
[tee @ 0x562fffd24bc0] Slave muxer #1 failed: End of file, continuing with 1/2 slaves.
它工作正常,直到其中一个(fluoz.zeno.fm:80/live)停止工作,我认为 Zeno 将他们的 Icecast 服务器从 v1(旧版)升级到 v2。为什么?因为当我对 Zeno icecast 服务器进行单独测试时,我意识到当我添加-legacy_icecast 1
选项时它运行良好
命令 2(仅使用选项测试 Zeno -legacy_icecast 1
):
/home/ubuntu/encoder/bin/ffmpeg -i rtmp://127.0.0.1:1935/app/live -vn -c:a mp3 -ac 2 -b:a 64k -ar 44100 -legacy_icecast 1 -f mp3 icecast://source:password@fluoz.zeno.fm:80/live
问题:
如何使用上面的命令 1 仍然发送到两个 icecast 服务器,但可以-legacy_icecast 1
选择只影响 zeno icecast 服务器而不影响liquidsoap icecast 服务器?我想不惜一切代价避免运行 2 个单独的 ffmpeg 实例,以节省系统资源和带宽。
我问这个问题的原因是因为我尝试通过将选项放在选项-legacy_icecast 1
之前将选项添加到命令 1(发送给两者的...-f tee...
选项),但它仍然无法发送到失败的 Zeno icecast 服务器( Liquidsoap icecast 服务器一直运行良好)。它似乎只有在我不使用 tee muxer 选项时使用命令 2(上面)时才能正常工作。
有没有一种棘手的方法可以将该-legacy_icecast 1
选项放在 tee muxer 选项中?