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

・2 分钟阅读

问题:

我下载了很多流文件,因为互联网速度太慢,无法观看高清晰度。 下载流文件时,我找到.m3u8文件,该文件指向TS文件。 然后,我使用以下命令:


ffmpeg -i stream.m3u8 vid.mp4



这很有效但它需要很长时间,因为它基本上是渲染所有东西,即使它已经是正确的格式 为了避免 渲染,我可以使用以下命令:


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



当我在没有中断的情况下从头到尾进行播放时,这样可以正常工作。 但当我后退或者前进时,vlc在创建图像时遇到问题。 它无法正常显示几秒钟。 这很烦人。

我的问题如何在没有完整rencoding的情况下创建视频, 但在任何时候都有良好的vlc渲染 ?


回答 1:

你要求ffmpeg将文件编码成 mp4,而不是将它们加入到一个单独的流中。 你需要concatenate连接到 temp.ts 然后用 -codec copy 将它的转换为 .mp4

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


回答 2:

如果不重新编码,你可以能无法更改视频的关键帧等,从而导致你描述的行为。 你可以尝试一些


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



请记住,你在速度上获得的速度会让你失去质量,所以"fast "可能会更好......


回答 3:

用 ffmpeg mp4joiner 查看我的变体

Screenshot


讨论
Tony profile image