本质上,我想要做的是让 ffmpeg 使用空管道连续流式传输到 RTMP 服务器,然后当我想要流式传输某些内容时,将数据添加到管道。
我这样做的原因是,我正在从外部源传输视频。每当视频播放完毕,ffmpeg 就会崩溃,因为它没有收到任何数据,所以我必须再次打开它。
这可能吗?如果不行,还有其他方法吗?
我当前的命令是:
ffmpeg -i pipe:0 -re -c copy -f flv rtmp://mystream.com/key
pipe:0
是...的一个实例韋特達。
答案1
我解决这个问题的方法是使用我自己的RTMP 服务器将视频流传输到主机。
我使用以下方式将视频传输到本地 RTMP 服务器
mkfifo x
ytdl http://youtube.com/watch?v=12345 > x
ffmpeg -re -i x -c copy -f flv rtmp://mylocalRTMPserver/stream
然后使用以下命令创建从该流到主机的流
ffmpeg -re -i rtmp://mylocalRTMPserver/stream -c copy -f flv rtmp://mystream.com/key
如果上述流没有收到输入,它会保持打开状态约 30 秒,这样我就可以关闭 youtube 管道并再次打开它。
虽然这可行,但还需要运行两个 ffmpeg 实例,从而产生额外的开销。