У меня есть набор видеокадров, сохраненных в виде изображений в каталоге, и я пытаюсь закодировать их в видео хорошего качества, однако каждая настройка и каждый формат, который я пробую, создают очень заметные артефакты.
Основная команда такова:
ffmpeg -r 25 -i %4d.png myvideo.mpg
и я пробовал флаги minrate и maxrate. Подойдет любой из форматов {mpg, avi, mov, flv}.
Есть предложения по настройкам? Конечный размер файла не является проблемой.
video
ffmpeg
video-encoding
CakeMaster
источник
источник
ffmpeg -r 20 -f image2 -i myImage%04d.png -f mp4 -q:v 0 -vcodec mpeg4 -r 20 myVideo.mp4
. Я обнаружил, что для увеличения частоты кадров мне пришлось указать ее как для входных, так и для выходных файлов. Мне кажется, этот кодек работает - возможно, вам не нужно его указывать. Я просто хотел включить то, что сделал, потому что потратил много времени, работая над этим. Единственным недостатком является то, что мои входные изображения высококонтрастные (синие и красные шары на белом фоне), а позже в фильме все шары начинают становиться одного темного цвета - нежелательный эффект контраста.Ответы:
Пара вещей:
Вам необходимо установить битрейт видео. Я никогда не использовал minrate и maxrate, поэтому не знаю, как именно они работают, но, установив битрейт с помощью
-b
переключателя, я могу получать видео высокого качества. Вам нужно выбрать битрейт, который предлагает хороший компромисс между сжатием и качеством видео. Возможно, вам придется поэкспериментировать с этим, потому что все зависит от размера кадра, частоты кадров и количества движения в содержимом вашего видео. Имейте в виду, что скорость DVD обычно составляет около 4-5 Мбит / с для 720x480, поэтому я обычно начинаю с этого и решаю, нужно ли мне больше или меньше, а затем просто экспериментирую. Например, вы можете добавить-b 5000k
в командную строку, чтобы получить более или менее битрейт DVD-видео.Вам необходимо указать видеокодек. Если вы этого не сделаете, ffmpeg по умолчанию будет использовать MPEG-1, который довольно старый и не обеспечивает такого же сжатия, как MPEG-4 или H.264. Если ваша версия ffmpeg построена с поддержкой libx264, вы можете указать ее
-vcodec libx264
как часть командной строки. В противном случае-vcodec mpeg4
также будет работать лучше, чем MPEG-1, но не так хорошо, как x264.Есть много других дополнительных опций, которые помогут вам добиться наилучшего качества при минимальных битрейтах. Посмотрите здесь несколько примеров.
источник
ffmpeg -i … -c:a copy -c:v libx264 -crf 18 -preset veryslow …
. 18 - это CRF с очень незначительной потерей качества, но битрейт, вероятно, будет низким. И вы можете попробовать более высокие значения CRF, если вам нужен файл меньшего размера. Как видите, это довольно просто.Вам нужно указать параметр -vb, чтобы увеличить битрейт видео, иначе вы получите значение по умолчанию, которое создает меньшие видео, но с большим количеством артефактов.
Попробуйте что-то вроде этого:
ffmpeg -r 25 -i %4d.png -vb 20M myvideo.mpg
источник
Перед созданием видео убедитесь, что PNG полностью непрозрачны.
например, с помощью imagemagick, дайте им черный фон:
Судя по моим тестам, ни битрейта, ни кодека недостаточно, чтобы видео выглядело хорошо, если вы загрузите ffmpeg PNG с прозрачностью
источник
Если вы не выполните какую-либо постобработку, видео никогда не будет лучше исходных кадров. Также, как и в книжке-книжке, если у вас есть большой «прыжок» между ключевыми кадрами, это будет выглядеть забавно. Обычно вам нужно достаточно "анимации движения" между ключевыми кадрами, чтобы получить плавную анимацию. HTH
источник