我正在运行一个基于 Icecast 的在线广播。源码客户端是我自己写的,这样可以灵活安排曲目等。为了在收音机上播放曲目,在我的 python 代码中,我运行 2 个子进程: ffmpeg 将文件从磁盘解码为 WAV,然后重定向其输出,由 oggenc 编码。对于每个曲目来说,都是这样的:
ffmpeg -i foo_bar.mp3 -acodec pcm_s16le -ac 2 -f wav pipe:1 | oggenc - -b 128 --managed -o -
它工作得很好,直到有新的曲目可以播放。有时玩家开始表现得很奇怪,例如 mplayer 只是停止并退出,vlc 可以改变速度并开始产生令人毛骨悚然的声音等等。
最简单的解决方案是让 oggenc 永远运行,并以某种方式替换它从标准输入读取的波形,但我不知道如何以不那么棘手的方式做到这一点。我想在这里避免复杂的事情,因为它会影响源客户端的稳定性。你怎么认为?
谢谢