Я боролся с кодированием видео с использованием FFMPEG и x264.Вывод заикается при воспроизведении в Quicktime, тогда как в VLC он показывает множество артефактов сжатия в тех же местах, где заикается Quicktime.Таким образом, кажется, что Quicktime заикается, потому что пытается подавить искажения / артефакты.
Видео содержит много случайных движений, включая кадры, в которых 75% пикселей будут меняться через произвольный интервал (видео генерируется программным обеспечением, поэтому оно действительно псевдослучайное).Сжатие, кажется, задыхается в тех местах, где, вероятно, неправильно обнаруживается «вырезка сцены».Также кажется, что он задыхается через регулярные промежутки времени, когда я предполагаю, что он выполняет ключевой кадр.
Я основал мой пресет кодирования на пресете x264-hq, который поставляется с FFMPEG.Я пытался отключить распознавание сцен и играть с опциями keyint
/ g
и keyint_min
.Установка g
в 1 заставляет это работать, но уносит размер файла.Я пробовал пресеты без потерь, но они не воспроизводятся в Quicktime.Как ни странно, у меня не было проблем при работе с тестовым видео с низким разрешением (1440x810).
Вот предустановка, которая у меня есть сейчас, которая работает, но дает файл, который примерно на 60% больше, чем(нерабочий) HQ предустановленных выходов.Есть ли способ улучшить это?Размер файла не имеет большого значения, я просто хочу что-то, что будет воспроизводиться где угодно и будет очень высокого качества.
coder=1
flags=+loop
cmp=+chroma
partitions=+parti8x8+parti4x4+partp8x8+partp4x4+partb8x8
me_method=umh
subq=8
me_range=16
g=1
keyint_min=1
sc_threshold=0
i_qfactor=0.71
b_strategy=1crf=20
qcomp=0.6
qmin=20
qmax=51
qdiff=4
bf=16
refs=4
trellis=1
flags2=+dct8x8+wpred+bpyramid+mixed_refs
wpredp=2
Вот команда:
ffmpeg \
-r 60 -i "frame-%06d.tiff" \
-vcodec libx264 -vpre my_preset \
-threads 0 \
-r 60 -an -f out.mp4