由于网速太慢,无法观看高清视频,因此我下载了很多流媒体。下载流媒体时,我会找到指向 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连接工具