如果传入的udp://流未激活,ffmpeg中是否可以显示循环播放的视频或图像?
就像让播放器显示等待播出视频/视频直到直播开始之前一样。
这就是窍门... FFmpeg及其相关工具FFserver和FFplay没有任何用于将实时输入切换为单个运行输出的机制。当UDP流启动时,它们也没有任何内置方式来触发外部事件。至少没有我能找到的。
为了执行您打算采取的措施,一种解决方案是启动FFmpeg实例,将您的PSB映像流推送到您的服务器,然后-一旦真正的UDP流开始通过-杀死该流并用UDP流的内容启动第二个。如果指定了UDP流输入但未接收到该流,则FFmpeg和FFplay都将“旋转”(即,处于侦听状态),因此可以将已记录的FFplay实例用作触发器。(在第一个实例运行时,启动FFmpeg的第二个实例只会破坏到服务器的流传输)。
当然,杀死第一个流并启动第二个流可能并不理想,但是如果可以接受RTMP流中非常短的中断,则可以为您解决问题。如果没有可接受的中断,则必须采用以下方法:将PSB映像和UDP流都推送到命名管道,然后使用concat多路分配器通过FFmpeg的第三个实例将它们推送到RTMP服务器。在这种情况下,您需要在两个初始流中都使用完全匹配的视频和音频编码器,以使concat正常工作,并且由于您要拉入第3方流,因此如果原始流缆更改其设置,则可能会出现问题。
无论如何,这是一个指向相当基本的bash脚本的链接,该脚本运行我所描述的kill1-start2场景。(Slexy.org上的脚本)。我会警告您,我不是脚本专家,所以有人可能会想出一种更简单和/或更清洁的方法来执行此操作。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句