1

Я пытаюсь использовать ffmpeg для конвертации видео в DivX. Вот моя текущая командная строка:

-vtag DIVX -f avi -vcodec msmpeg4 -s 640x480 -b 345k -acodec libmp3lame -ab 256 -ac 2 -ar 48000

Проблема в том, что я получаю файл DivX низкого качества, когда мне нужен файл высокого качества. Может кто-нибудь указать мне на лучшую команду для более высокого качества, которая была бы полезна, и является ли msmpeg4 последним кодеком DivX?

3 ответа3

2

Либо используйте более высокую скорость передачи битов и / или используйте двухпроходное кодирование, либо используйте -qscale для нацеливания на уровень качества в режиме переменной скорости передачи данных, а не на конкретную скорость передачи данных. Смотрите этот пост в блоге для более подробной информации.

Qscale

Диапазон qscale для mpeg4 составляет 1–31, где ниже = лучшее качество / более высокий размер файла, а 3–6 обычно можно считать полезным диапазоном. Это будет нацелено на данное качество с переменной скоростью передачи данных. Вы также можете использовать qscale с libmp3lame, где диапазон 0–9, а более низкие числа дают лучшее качество. Смотрите здесь для получения дополнительной информации; все до 6 даст вам хорошее качество.

Современный синтаксис:

ffmpeg -i input.file -c:v mpeg4 -q:v 5 -tag:v DIVX -s 640x480 -c:a libmp3lame -q:a 5 -ac 2 -ar 44100 output.avi

Старый синтаксис:

ffmpeg -i input.file -vcodec mpeg4 -qscale 5 -vtag DIVX -s 640x480 -acodec libmp3lame -aq 5 -ac 2 -ar 44100 output.avi

Двухпроходное кодирование

Обратите внимание, что пользователи Windows должны использовать NUL а не /dev/null . Используйте это, если вы хотите нацелиться на определенный размер, в противном случае просто используйте опцию VBR quality- -qscale . Эти примеры поместят 90-минутный фильм на компакт-диск объемом 700 МБ.

Современный синтаксис:

ffmpeg -y -i input.file -c:v mpeg4 -b:v 868k -tag:v DIVX -s 640x480 -an -pass 1 -f rawvideo /dev/null
ffmpeg -i input.file -c:v mpeg4 -b:v 868k -tag:v DIVX -s 640x480 -c:a libmp3lame -b:a 192k -ac 2 -ar 44100 -pass 2 output.avi

Старый синтаксис:

ffmpeg -y -i input.file -vcodec mpeg4 -b 868k -vtag DIVX -s 640x480 -an -pass 1 -f rawvideo /dev/null
ffmpeg -i input.file -vcodec mpeg4 -b 868k -vtag DIVX -s 640x480 -acodec libmp3lame -ab 192k -ac 2 -ar 44100 -pass 2 output.avi

Обратите внимание, что вам не нужен строго -ac 2 , поскольку MP3 поддерживает только два канала, поэтому любой объемный звук будет автоматически микшироваться.

Вы должны рассмотреть возможность использования видео H.264 /AAC в контейнере MP4; единственная причина использовать DivX /MP3 в AVI - это необходимость поддержки устаревших аппаратных плееров. Использование DivX приводит к худшему качеству по сравнению с видео в кодировке H.264 при той же скорости передачи данных.

2

Вы можете попытаться указать большее значение для опции -b 345k . Это определяет битрейт выходного видео. Возможно, вы можете попытаться изменить -r fps если это необходимо.

Вы должны быть осторожны при изменении этих значений. Не все значения принимаются для всех кодеков. Посмотрите справку / руководство по ffmpeg для получения дополнительной информации.

0

Попробуй это:

-vtag DIVX -f avi -vcodec mpeg4 -mbd 1 -bf 2 -s 640x480 -b 900k -acodec libmp3lame -ab 192 -ac 2 -ar 44100

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