我在网上找到了这句话
ffmpeg -i input.mp4 -c:a copy -c:v copy -movflags faststart output.mp4
它接受输入,复制音频、视频,并将 MOOV 原子设置为名为 output.mp4 的元素的开头。基本上是在新的位置使用 MOOV 原子创建相同的视频。
不过,我需要转换这种媒体的类型 - 所以我有以下行
ffmpeg -i input.wmv -vcodec h264 -f mp4 output.mp4
我的问题是,这能在一行中完成吗?我知道我可以一个接一个地运行,但这会创建几个视频,而我只需要生成的视频,这可能会导致大量内存浪费。
我相信这条线
ffmpeg -i input.wmv -movflags faststart -vcodec h264 -f mp4 output.mp4
是合法的,但如果没有直接的副本,这将需要很长时间来计算。
欢迎有关 MOOV 原子和 ffmpeg 计算的任何意见。
答案1
复制流更快
你的第一个例子就是复制流然后重新定位 moov 原子。此重新定位允许视频在完全下载之前开始播放,例如观众通过浏览器观看您的视频。
ffmpeg -i input.mp4 -codec copy -map 0 -movflags +faststart output.mp4
编码速度较慢
如您的第二个示例所示,编码可能需要很长时间,具体取决于多种因素,包括:输入的复杂性和持续时间、ffmpeg 和 x264 版本的编译方式、版本的使用年限(可能缺少功能、改进和错误修复)、您的 CPU、使用的编码器以及您的编码设置。并非所有这些都可以控制,但您可以确保使用的是最新版本,并且可以更改编码设置以更好地满足您的需求。
获取 FFmpeg
静态构建易于使用:只需下载、提取并运行即可。请参阅FFmpeg 下载页面,了解 Linux、Windows 和 OS X 用户的选项。您还可以编译和几个分步FFmpeg 编译指南可用。
使用预设
使用 x264 编码时,您可以使用更快的编码预设:
ffmpeg -i in.wmv -codec:v libx264 -preset fast -movflags +faststart out.mp4
预设是决定编码效率的选项集合,因此也会影响速度。当前预设为:ultrafast
,,,,,,,,,,。默认值为,和,很superfast
浪费时间。一般建议使用您有耐心的最慢预设。请参阅veryfast
faster
fast
medium
slow
slower
veryslow
placebo
medium
placebo
FFmpeg 和 x264 编码指南了解更多信息。
是-f mp4
不必要的,并且取决于你的 ffmpeg 版本h264
是否可以作为编码器名称,它是惯例使用libx264
。