1

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

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

Я также попытался использовать 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%

3 ответа3

7

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

  • Вы используете старую версию 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 , быстрое , например, -preset fast . Обратите внимание, что установка этого увеличит размер вашего файла.

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

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

4

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: строгая экспериментальная ошибка -lovelvel /tmp/one.mp4

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

-2

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .