在 Ubuntu 中从 WebM 转换为 MP4 速度慢且质量差

dfo*_*evy 3 mp4 ffmpeg video-conversion webm libav

我已经使用了命令

ffmpeg -i input.webm -q:v 10 -c:a copy out.mp4
Run Code Online (Sandbox Code Playgroud)

我也尝试使用avconv代替 ffmpeg。

转换成功,但质量很差。也需要很多时间。它也不能与 Windows Media Player 一起播放。(这样做的原因是文件被转换为 mpegv1。)如何添加一个选项将其转换为 mpegv2?

以下是命令行输出:

avconv version 0.8.16-4:0.8.16-0ubuntu0.12.04.1, Copyright (c) 2000-2014 the Libav developers
  built on Sep 16 2014 18:33:49 with gcc 4.6.3 
[matroska,webm @ 0xe737a0] Estimating duration from bitrate, this may be inaccurate
Input #0, matroska,webm, from 'test.webm':
  Duration: 00:00:08.57, start: 0.000000, bitrate: N/A
    Stream #0.0: Video: vp8, yuv420p, 1536x768, PAR 1:1 DAR 2:1, 1k fps, 1k tbr, 1k tbn, 1k tbc (default) 
    Stream #0.1: Audio: vorbis, 44100 Hz, stereo, s16 (default)
[buffer @ 0xee38e0] w:1536 h:768 pixfmt:yuv420p
Output #0, mp4, to 'c2.mp4':
  Metadata:
    encoder         : Lavf53.21.1
    Stream #0.0: Video: mpeg4, yuv420p, 1536x768 [PAR 1:1 DAR 2:1], q=2-31, 200 kb/s, 1k tbn, 1k tbc (default)
    Stream #0.1: Audio: libvorbis, 44100 Hz, stereo (default)
Stream mapping:
  Stream #0:0 -> #0:0 (vp8 -> mpeg4)
  Stream #0:1 -> #0:1 (copy)
Press ctrl-c to stop encoding
frame= 8572 fps=342 q=10.0 Lsize=   90902kB time=8.56 bitrate=86984.0kbits/s dup=8438 drop=0    
video:90823kB audio:0kB global headers:0kB muxing overhead 0.086778%
Run Code Online (Sandbox Code Playgroud)

slh*_*hck 8

这里有几个问题:

  • 您使用的是avconv来自 Ubuntu 12.04 存储库的旧版本。
  • 此版本没有libx264编译H.264 编码器 ( )。
  • 这就是它使用mpeg4编码器选择 MPEG-4 Part II 视频的原因。虽然它仍然使用相同的 .MP4 容器,但 MPEG-4 Part II 不如 H.264 高效。
  • 您的命令使用-q:v 10,质量很低。范围是 1-31,其中 1 是最好的,理想情况下您需要 2-5 左右的值。
  • 您无法将 Vorbis 音频复制到 MP4 容器,因此-c:a copy无法正常工作。

所以,为了解决这个问题,我推荐以下两种选择之一:

  1. 继续使用avconvapt-get install libavcodec-extra-53在 Ubuntu 12.04 和libavcodec-extra-54Ubuntu 14.04 上安装以获得对 avconv 的 x264 支持。
  2. 改用最近的ffmpeg。下载最近的 ffmpeg 构建(单击Linux 静态构建链接)。在ffmpeg某处提取二进制文件并使用它。

然后运行以下命令(并替换ffmpegavconv根据您的选择是什么):

ffmpeg -i input.webm -c:v libx264 -crf 20 -c:a aac -strict experimental out.mp4
Run Code Online (Sandbox Code Playgroud)

CRF 控制质量,其中 18-28 是明智的选择。越低越好,默认值为 23。您可以-b:a 128k根据自己的喜好或类似的方式设置音频比特率。

如果您想加快转换速度,您可以使用-preset并将其设置为其中之一ultrafast, superfast, veryfast, faster, fast,例如-preset fast. 请注意,设置此项会增加您的文件大小。

ffmpegH.264 编码指南非常有用,也应该适用于 avconv(但不能保证)。

至于 MPEG-2,请看这个问题:如何使用 FFMPEG 制作尽可能高质量的 MPEG2 视频文件?- 不要忘记选择-c:a libmp3lame作为音频。


dfo*_*evy 6

ffmpeg 版本 1.2.6-7:1.2.6-1~trusty1

ffmpeg -i one.webm -r 10 -cpu-used 5 -c:v libx264 -crf 20 -c:a aac -严格实验 -loglevel 错误/tmp/one.mp4

这非常有效。10 分钟内转换 1 小时的视频。


归档时间:

查看次数:

13730 次

最近记录:

10 年,6 月 前