Конвертируйте видео в формате "H264 MP4 AVC (часть 10) (avc1)"/"MPEG AAC 48 кГц" в формате 1080p 23,976000 кадров в секунду в 720p с максимально возможным качеством

file говорит, что все файлы ISO Media, MPEG v4 system, version 2 и информация о названии взята из VLC 2.0.9. IMO 1080p не нужен, тем более что другие видео более ранних версий - 720p, и они вполне хороши; Я не знаю и не уверен, но я думаю, что все эти видео HD, что объясняет их размер. Остальная информация, предоставленная VLC во время воспроизведения, для полноты:

Decoded format: Planar 4:2:0 YUV

Я нашел не один ответ, и все они используют ffmpeg но avconv является преемником; Я знаю, это одно и то же, по крайней мере, по большей части. Я знаю по опыту avconv не принимает некоторые параметры, предназначенные для ffmpeg, Не говоря уже о том, что оба варианта имеют одинаковые параметры в одной программе, но имеют совершенно разные результаты.

1 ответ

Решение

1. Получить ffmpeg

Всегда полезно использовать последнюю сборку при кодировании с ffmpeg, Разработка очень активна, и использование последних сборок позволит вам избежать исправленных ошибок, предоставляя вам доступ к последним функциям.

Есть два основных способа получить ffmpeg и ни один не будет мешать пакетам из репозитория, включая так называемый пакет "ffmpeg":

Использование статической сборки

Это просто бинарный файл, который кто-то скомпилировал. Все, что вам нужно сделать, это загрузить, распаковать и запустить его (обратите внимание на ./ до ffmpeg):

wget http://ffmpeg.gusari.org/static/32bit/ffmpeg.static.32bit.$(date +"%F").tar.gz
tar xzvf ffmpeg.static.32bit.$(date +"%F").tar.gz
./ffmpeg -i input.mp4 <your options> output.mkv

составление ffmpeg

При компиляции вы контролируете, как именно ffmpeg настроен, а также позволяет использовать определенные кодеры, такие как libfdk_aac, которые недоступны в статических сборках.

Просто следуйте пошаговому руководству: Как скомпилировать FFmpeg в Ubuntu. Если вы можете скопировать и вставить, вы можете скомпилировать ffmpeg,


2. Кодировать

ffmpeg -i in.avi -vf scale=-1:720 -c:v libx264 -crf 18 -preset fast -c:a copy out.mkv

В этом примере:

  • scale фильтр, чтобы изменить размер видео. С scale Вы можете просто объявить одно измерение, высоту в этом случае и использовать -1 в другом. ffmpeg Затем автоматически рассчитает правильное значение, сохраняя соотношение сторон.

  • Кодировщик libx264 будет производить видео H.264. Качество контролируется с -crf, Диапазон представляет собой логарифмическую шкалу от 0 до 51. 0 - без потерь (файлы, вероятно, будут огромными), 18 часто считается "визуально без потерь", 23 - по умолчанию, а 51 - худшее качество. Как правило, вы используете самое высокое значение, которое все еще дает вам приемлемое качество.

  • Скорость кодирования видео / эффективность сжатия для этого кодера контролируется с помощью -preset, Это: сверхбыстрый, сверхбыстрый, очень быстрый, быстрый, быстрый, средний, медленный, медленный, очень низкий. По умолчанию "средний". Обычно вы используете самый медленный пресет, к которому у вас есть терпение.

  • Для набора видео используйте тот же -crf а также -preset для всех них.

  • Аудио будет скопировано с входа на выход. Думайте об этом как о копировании и вставке.

  • Будет использован выходной контейнер Matroska. Он поддерживает больше форматов, но не так широко поддерживается плеерами и устройствами, как, например, MP4.

Кодирование всех видео

Вы можете использовать bash "for loop" для кодирования всех видео в каталоге:

mkdir encoded
for f in *.avi; do ./ffmpeg -i "$f" -vf scale=-1:720 -c:v libx264 -crf 18 -preset fast -c:a copy encoded/"${f%.avi}.mkv"; done

Также см

Другие вопросы по тегам