我正在通过UDP接收MPEG-TS流,并使用FFmpeg(使用编解码器复制和映射所有流)将内容保存到文件。在数据流停止的情况下,我想重新启动FFmpeg并恢复到已写入的现有文件。如何让ffmpeg附加到现有的输出文件而不覆盖它?
如何配置FFmpeg以附加到文件,并在重新启动时不覆盖它?
输入和输出容器都是MPEG-TS,流和编解码器的数量是相同的。
我正在通过UDP接收MPEG-TS流,并使用FFmpeg(使用编解码器复制和映射所有流)将内容保存到文件。在数据流停止的情况下,我想重新启动FFmpeg并恢复到已写入的现有文件。如何让ffmpeg附加到现有的输出文件而不覆盖它?
如何配置FFmpeg以附加到文件,并在重新启动时不覆盖它?
输入和输出容器都是MPEG-TS,流和编解码器的数量是相同的。
您可以输出到stdout
并使用shell重定向输出到文件。这只作品格式直接concatenable如mpegts
和将创建间断:
ffmpeg -re -i udp://... -f mpegts - >> output.ts
如何防止不连续?我想附加几个.ts块同时播放视频,但我可以看到每隔10秒钟切块。如果覆盖文件(使用-i“concat:chunk1.ts | chunk2.ts”)而不是追加,我没有这个问题。应该可以用.ts块做,而不会覆盖,因为这样HLS m3u8 livestream如何工作,您可以在文件仍在下载时播放。 – baptx
我不认为它的实现,但你可以捕捉到不同的文件,后来将它们连接起来。你可以使用'-strftime 1'%Y-%m-%d_%H-%M-%S.ts'来为你的文件名添加一个时间戳,如果需要的话。 – aergistal
不幸的是,这对于我来说不适合捕获数据流只是我工作的解决方案的一部分,记录的文件通过我制作的基于节点的网络协议同时传输到其他计算机,它有点像半实时传输解决方案,我可以重写代码我的源节点允许编号的文件,但它会是一个麻烦。最简单的解决方案是,如果FFmpeg可以继续写入已存在的文件,而不是覆盖。 – TomRay74