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

11963
dfordevy

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

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% 
1

3 ответа на вопрос

7
slhck

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

  • Вы используете старую версию 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качестве аудио вместо.

Что мы делаем, чтобы использовать его в Ubuntu 14.04? dfordevy 9 лет назад 0
Вы можете сделать то же самое в Ubuntu 14.04, но с помощью `libavcodec-extra-54`. Что касается файла "все еще MP4v1", вы должны сказать мне, что именно вы сделали, и загрузить куда-нибудь полный вывод командной строки (например, http://pastebin.com/). slhck 9 лет назад 0
Я вставил вывод: avconv -i input.webm -c: v libx264 -crf 20 -c: aac-строгий экспериментальный test_1min_no_preset.mp4 здесь: http://pastebin.com/SQdbvM0Y. когда я делаю файл test_1min_no_preset.mp4, test_1min_no_preset.mp4: носитель ISO, система MPEG v4, версия 1 dfordevy 9 лет назад 0
Я не думаю, что avconv или ffmpeg могут писать теги `mp42`. Зачем тебе это на самом деле нужно? MP4v1 не достаточно хорош? slhck 9 лет назад 0
Любой тэг мне подходит, но мне просто нужно его воспроизвести с помощью Windows Media Player. dfordevy 9 лет назад 0
Это зависит исключительно от версии проигрывателя Windows Media и Windows: http://support.microsoft.com/kb/316992?wa=wsignin1.0 - только новейший WMP может воспроизводить H.264 / AAC вообще. Для более старых версий WMP вам нужны дополнительные кодеки. slhck 9 лет назад 0
Мне тоже нужны эти кодеки, мне нужно, чтобы они поддерживались на старых проигрывателях Windows Media. Что мне нужно для этого сделать? dfordevy 9 лет назад 0
См. Http://superuser.com/questions/314694/how-do-i-tell-ffmpeg-to-transcode-to-a-video-codec-supported-by-windows-media-pl и http: // superuser .com / questions / 435941 / какие кодеки являются наиболее подходящими для воспроизведения с Windows-проигрывателем мультимедиа на окнах и http://superuser.com/questions/418945/convert-video-into -format-который-это-наиболее вероятно, играть-на-Windows-системы slhck 9 лет назад 0
http://pastebin.com/MR2gkNjA это то, как выглядит вывод на моей верной машине, где преобразованный файл показывает мне черное видео. С той же командой, что и выше. Единственное изменение заключается в том, что я попытался просто скопировать аудио. dfordevy 9 лет назад 0
Вы не сказали мне, какую команду вы используете. Кроме того, я бы порекомендовал вам задать новый вопрос (поскольку эта ветка комментариев действительно не должна использоваться вместо чата), включая команду, вывод командной строки и то, в каком проигрывателе вы пытаетесь просмотреть видео. Спасибо ! slhck 9 лет назад 0
4
dfordevy

ffmpeg version 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 -strict experimental -loglevel error /tmp/one.mp4

This works very well. Converted 1 hour video in 10 minutes.

-2
Overmind

Try ffmpeg -i input.webm -sameq out.mp4

As alternatives, you can try FFMC: http://www.noobslab.com/2013/04/latest-ff-multi-converter-for-ubuntu.html or pre-compiled Miro: http://www.getmiro.com/download/for-ubuntu/

там говорится о нераспознанном варианте sameq dfordevy 9 лет назад 0
также ffmulticonverter не делал преобразование dfordevy 9 лет назад 0
Не используйте sameq: http://superuser.com/questions/478549/what-is-the-sameq-or-same-quant-option-in-ffmpeg-does-it-mean-same-quality. Это не означает то же качество, и последние версии ffmpeg даже не имеют этой опции (по уважительным причинам). slhck 9 лет назад 0
@ Oververind - Было бы хорошо, если бы вы отформатировали свой пост. У вас более чем достаточно репутации, чтобы использовать горячие ссылки в ваших ответах. Это всего лишь предложение, чтобы избежать дополнительных отрицательных голосов. Ramhound 9 лет назад 0
Я сталкиваюсь с несколькими проблемами, связанными с этим вопросом. Иногда функция кода не работает должным образом (особенно при использовании специальных символов). Кроме того, в области комментариев, если я нажимаю, введите комментарий, а не переходите на новую строку. Я не пытался тестировать специальные символы, такие как конец строки. Во всяком случае, я пытаюсь поближе познакомиться с этим интерфейсом. Overmind 9 лет назад 0
http://superuser.com/help/formatting slhck 9 лет назад 1
Они кажутся нормальными, но, похоже, не работают над комментариями. Есть ли что-то другое для комментариев? Overmind 9 лет назад 0
@Overmind Комментарии используют ограниченное форматирование. Нажмите на ссылку «Помощь» рядом с окном комментирования. Не забывайте, что вы должны @ -ing пользователи для получения уведомления. slhck 9 лет назад 1

Похожие вопросы