有时我喜欢录制来自在线广播频道,直播或存档流的节目。当无线电中没有有趣的实际节目时,我也想在录制的同时收听它。我正在使用这样的命令行,这是从Ruby脚本调用的 - 以帮助解析无线电'时间表/程序页面以及构建归档程序的正确URL,这些URL通常包含一些时间码,例如20160616_083000.mp3等。 所以我从Ruby脚本调用的命令行如下所示:
programmes.each{|datepart,programme_length|
cmd=%Q{ffmpeg -y -i http://example.com/stream/#{datepart}.mp3 -t #{programme_length} -c:a libmp3lame -b:a 160k "#{fname}" -c copy -t #{programme_length} -f mp3 -f rtp rtp://127.0.0.1:8888}
system cmd
}
它驻留在循环中以记录先前解析和选择的程序。在cource中,程序被正确记录,同时ffmpeg将它作为mp3 rtp流传输到给定端口的localhost。在另一个终端窗口中,我使用单行连接到流数据,如下所示:
while true; do ffplay -i rtp://127.0.0.1:8888 -autoexit; done
我正在使用-autoexit开关,它应该在结束时停止播放流,并且" while"循环应该再次连接到由节目录制服务的新流"每个"环。不幸的是,它会在结束后继续播放,并且不会启动与新启动的流的新连接。如何正确使用ffplay在rtp流结束后停止播放并让它再次连接到新流?