如何使用 ffmpeg 将 ts 文件合并成 mp4?

如何使用 ffmpeg 将 ts 文件合并成 mp4?

由于网速太慢,无法观看高清视频,因此我下载了很多流媒体。下载流媒体时,我会找到指向 TS 文件的 .m3u8 文件。然后我使用以下命令:

ffmpeg -i stream.m3u8 vid.mp4

这有效。但这需要很长时间,因为它基本上重新编码了所有内容,即使它已经是正确的格式。为了避免重新编码,我可以使用以下命令:

ffmpeg -i stream.m3u8 -vcodec copy -acodec copy vid.mp4

当我从头到尾不间断地播放时,这很好用。但是当我向前或向后跳时,vlc 无法创建图像。几秒钟内无法正确显示。这很烦人。

我的问题:如何在不完成重新编码的情况下创建视频,但在任何时候都具有良好的 vlc 渲染?

答案1

你要求 ffmpeg 将文件编码为 mp4,而不是将它们合并为单个流。你需要连接变成temp.ts,然后将其转换.mp4-codec copy

另外,我相信您需要在第二步中转换adts为。aac-bsf:a aac_adtstoasc

答案2

如果不重新编码,您可能无法更改视频的关键帧等,从而导致您所描述的行为。

不过你可以尝试类似以下的方法:

ffmpeg -i stream.m3u8 -codec:v "libx264" "-preset" "ultrafast" output.mp4

请记住,速度的提高会降低质量,因此“快”可能更好……

答案3

请参阅我的 ffmpeg 变体 mp4连接工具

截屏

相关内容