Преобразование из WebM в MP4 в Ubuntu происходит медленно и плохо

Я использовал команду

ffmpeg -i input.webm -q:v 10 -c:a copy out.mp4 

Я также попытался использовать avconv вместо ffmpeg.

Преобразование успешное, но качество плохое. Также требуется много времени. Он также не воспроизводится с проигрывателем Windows Media. (Причина этого – 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% 

Несколько проблем здесь:

  • Вы используете старую версию avconv из avconv Ubuntu 12.04.
  • Эта версия не содержит кодировщик H.264 ( libx264 ), скомпилированный в нее.
  • Вот почему вместо этого вы выбираете MPEG-4 Part II, используя кодировщик mpeg4 . Хотя он все еще использует тот же контейнер .MP4, MPEG-4 Part II не так эффективен, как H.264.
  • В вашей команде используется -q:v 10 , что довольно низкое качество. Диапазон от 1-31, где 1 – лучший, и в идеале вы хотите что-то около 2-5.
  • Вы не можете копировать звук Vorbis в контейнеры MP4, поэтому -c:a copy не будет работать.

Поэтому, чтобы исправить это, я бы рекомендовал один из двух вариантов:

  1. Продолжайте использовать avconv . Установите apt-get install libavcodec-extra-53 на Ubuntu 12.04 и libavcodec-extra-54 на Ubuntu 14.04, чтобы получить поддержку x264 для avconv.
  2. Вместо этого используйте недавний ffmpeg . Загрузите последнюю сборку ffmpeg (нажмите ссылку Linux Static Builds ). Извлеките двоичный файл ffmpeg где-нибудь и используйте это.

Затем запустите следующую команду (и замените ffmpeg на avconv зависимости от вашего выбора):

 ffmpeg -i input.webm -c:v libx264 -crf 20 -c:a aac -strict experimental out.mp4 

CRF контролирует качество, где 18-28 – разумный выбор. Нижний – лучше, а 23 – по умолчанию. Вы можете установить битрейт звука с помощью -b:a 128k или аналогично вашему вкусу.

Если вы хотите ускорить преобразование, вы можете использовать -preset и установить его на один из ultrafast, superfast, veryfast, faster, fast , ultrafast, superfast, veryfast, faster, fast , например, -preset fast . Обратите внимание, что установка этого параметра приведет к увеличению размера вашего файла.

Руководство по кодированию H.264 для ffmpeg очень полезно, и оно также должно применяться к avconv (но никаких гарантий по этому поводу).

Что касается MPEG-2, посмотрите на этот вопрос: Как сделать видеофайл MPEG2 с наивысшим качеством, используя FFMPEG? – и не забудьте выбрать -c:a libmp3lame как аудио вместо этого.

Версия 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: aac -strict experimental -loglevel error /tmp/one.mp4

Это работает очень хорошо. Конвертированное видео за 1 час через 10 минут.

Попробуйте ffmpeg -i input.webm -sameq out.mp4

В качестве альтернативы вы можете попробовать FFMC: http://www.noobslab.com/2013/04/latest-ff-multi-converter-for-ubuntu.html или предварительно скомпилированный Миро: http://www.getmiro.com / скачать / для-убунту /

Interesting Posts
Давайте будем гением компьютера.