Как повысить качество преобразования MP4 в WMV с помощью ffmpeg?

Я конвертирую файлы MP4 в WMV с помощью этих двух команд масштабирования:

ffmpeg -i test.mp4 -y -vf scale=-1:360 test1.wmv
ffmpeg -i test.mp4 -y -vf scale=-1:720 test2.wmv

Я также пробовал:

ffmpeg -g 1 -b 16000k -i test1.mp4 test1.wmv

Однако создаваемые файлы .wmv являются «блочными и зернистыми», как вы можете видеть здесь, в небольшой части скриншота видео:

введите здесь описание изображения

Это размеры:

test.mp4 - 106 MB
test1.wmv - 6 MB
test2.wmv - 16 MB

Как увеличить качество/размер результирующих файлов .wmv (размер файлов .wmv не имеет значения)?


person Edward Tanguay    schedule 18.06.2012    source источник


Ответы (5)


Вместо этого рассмотрите следующую команду (некоторые устаревшие команды в разделе окончательного ответа):

ffmpeg -i test.mp4 -c:v wmv2 -b:v 1024k -c:a wmav2 -b:a 192k test1.wmv

ССЫЛКИ

person Reinhard Behrens    schedule 18.01.2016

Вы можете просто использовать параметр -sameq («использовать тот же квантователь, что и источник»), который создает видеофайл гораздо большего размера (227 МБ), но с превосходным качеством.

ffmpeg -sameq -i test.mp4 -y -vf scale=-1:360 test1.wmv

В более новых версиях ffmpeg флаг «-sameq» был удален. Для достижения аналогичных результатов следует использовать флаг qscale со значением 0:

ffmpeg -sameq -i test.mp4 -qscale 0 -vf scale=-1:360 test1.wmv
person Edward Tanguay    schedule 18.06.2012
comment
Лучшим решением является использование -qscale (или -qscale:v или -q:v в зависимости от ваших предпочтений синтаксиса); обычно со значением 2-5. Чем ниже значение, тем выше качество, а 2 можно считать визуально без потерь. -sameq не предназначен для использования между форматами, которые не имеют одного и того же масштаба квантователя, и это может иметь место для вас. - person llogan; 18.06.2012
comment
Также вы применяете -sameq в качестве параметра ввода (все, что предшествует -i). Вероятно, работает так, как ожидалось, но имейте в виду, что не все параметры, примененные к вводу, будут применены к выводу. - person llogan; 18.06.2012
comment
-sameq был удален. Когда вы пытаетесь использовать его, ffmpeg предлагает использовать -qscale 0 или эквивалентную опцию коэффициента качества, и выдает ошибку с недопустимым аргументом. - person Robert Koernke; 06.01.2016

Одна вещь, которую я обнаружил после многих разочаровывающих попыток улучшить окончательное качество, заключалась в том, что если вы не укажете битрейт, он будет использовать довольно низкое среднее значение. Попробуйте -b 1000k в качестве отправной точки и экспериментируйте, увеличивая или уменьшая ее, пока не достигнете желаемого результата. Ваш файл будет соответственно больше или меньше.

person Fabio Ceconello    schedule 07.02.2013

Рабочий ответ в 2020 году, создающий выходное видео без блочности:

ffmpeg -i input.mp4 -q:v 1 -q:a 1 output.wmv
person simon    schedule 30.09.2020

Я использовал это, и это оказалось довольно хорошо

ffmpeg -i "file1.mp4" -q:v 0 -c:v wmv2 -b:v 1024k -c:a wmav2 -b:a 192k test2.wmv
person Martin    schedule 07.09.2020
comment
-q:v и -b:v являются взаимоисключающими, что означает, что будет использоваться только один, а другой будет игнорироваться. Таким образом, вы должны выбрать один или другой, но не оба. - person llogan; 08.09.2020