Несколько проблем здесь:
- Вы используете старую версию
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
не будет работать.
Итак, чтобы исправить это, я бы порекомендовал один из двух вариантов:
- Продолжайте использовать
avconv
. Установитеapt-get install libavcodec-extra-53
на Ubuntu 12.04 иlibavcodec-extra-54
на Ubuntu 14.04, чтобы получить поддержку x264 для avconv. - Используйте
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
качестве аудио вместо.