使用FFmpeg将mov转换为mp4,提高质量

7

我希望将mov视频转换为mp4格式。目前,我通过bash调用ffmpeg来完成此操作,调用如下:

ffmpeg -i input.mov -f mp4 -vcodec mpeg2video -acodec mp3 output.mp4

没错,这个方法可以实现,但质量非常糟糕。我的50Mb文件被压缩到了只有2.3Mb的小文件。 后来我尝试了一种变化,只改变了容器:

ffmpeg -i input.mov -f mp4 -vcodec copy -acodec mp3 output.mp4

是的,那也行,但由于我没有压缩视频,所以文件仍然很大。 所以我的50Mb保持为50Mb。

是否有设置可以进行轻微或渐进式压缩,而不会完全失去质量? 我的目标输出文件大小可能为10-20 Mb。

我尝试过:

ffmpeg -i input.mov -f mp4 -vcodec -qscale:v 4 -acodec mp3 output.mp4

给我错误消息:

警告:库配置不匹配 [...] 未知编码器'-qscale:v'

使用的版本: ffmpeg version 2.8.11-0ubuntu0.16.04.1


这是一个比较宽泛的问题。您需要哪些输出格式,或者并不重要吗?为什么在这种情况下减小文件大小很重要?“警告:库配置不匹配”通常表示ffmpeg构建已损坏。如果您提供您的操作系统信息,我可以告诉您如何获取一个没有损坏的版本。 - llogan
期望的输出显然是mp4格式。为什么要减小文件大小呢?例如,通过互联网加载时间会更快。我使用的是kubuntu 16.04 64位版本和自带的ffmpeg工具: ffmpeg version 2.8.11-0ubuntu0.16.04.1 - Calamity Jane
2
这并不像看起来那么明显,因为MP4是一种容器格式,可以接受多种格式,包括MPEG-4第2部分视频、H.264和H.265/HEVC。你试图尝试各种格式,所以我想知道哪种格式足够。既然现在看起来你想要将其放在线上,那就只剩下H.264或H.265/HEVC了。 - llogan
1个回答

25

仅复用

如果您的输入视频和音频与MP4兼容,则可以使用流拷贝模式:

ffmpeg -i input.mov -c copy output.mp4

重新编码

如果您需要将视频编码到与MP4兼容的其他格式:

ffmpeg -i input.mov -crf 23 -preset medium -movflags +faststart -c:a aac output.mp4
  • 使用提供可接受质量的最高 -crf 值。
  • 使用你能够耐心等待的最慢 -preset
  • 如果输入是AAC音频,你可以将 -c:a aac 改为 -c:a copy

参见FFmpeg Wiki: H.264FFmpeg Wiki: H.265


这在网页浏览器上不起作用,只能播放音频。 - Mizanur Rahman Khan
@MizanurRahmanKhan 需要看到您的命令和完整日志才能提供帮助。 - llogan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接