ffmpeg vstats проблемы, недостающие кадры и вводящая в заблуждение информация! - PullRequest
0 голосов
/ 27 сентября 2010

Проблема у меня заключается в том, что при использовании ffmpeg для кодирования YUV с использованием libx264 я не получаю всю информацию о кадре в выходных данных -vstats. Возникает вопрос о том, насколько надежен ffmpeg, и поэтому можно ли доверять любому обзору «теста кодеков», основанному на ffmpeg?

Я анализирую кодеки, чтобы определить, как они работают. Я использую ffmpeg и его опцию -vstats для просмотра закодированного фильма кадр за кадром. процесс, который я использую:

RAW YUV -> штрих-код каждого кадра с номером кадра -> YUV со штрих-кодом

YUV со штрих-кодом -> кодированный (например, с помощью libx264) -> MKV -> Декодированный до YUV

Я могу сравнить два выхода («Штрих-код YUV» и «Декодирование в YUV»), используя штрих-код в каждом кадре. Затем я могу точно сравнить исходный кадр с закодированным кадром, используя PSNR и т. Д.

При кодировании с использованием libx264 и libdirac, есть некоторая информация о кадре, которая отсутствует. Другие кодеки, такие как mpeg2video или даже libvpx, не имеют этой проблемы.

Я обнаружил, что для первых 40-50 кадров vstats libx264 отсутствуют. С тех пор я доказал, что недостающая информация - это последние 40-50 кадров.

Также похоже, что ffmpeg вычисляет средний битрейт на основе информации в vstats. Но поскольку отсутствуют кадры, средняя скорость передачи битов меньше, чем должна быть.

Ниже приведены ссылки на пример ошибки среднего битрейта:

http://dl.dropbox.com/u/6743276/ffmpeg_probs/ffmpeg_av_bitrate_error.png

http://dl.dropbox.com/u/6743276/ffmpeg_probs/ffmpeg_av_bitrate_error.xlsx

Ниже приведена ссылка на график PSNR & f_size:

http://dl.dropbox.com/u/6743276/ffmpeg_probs/frame_mismatch.png

Ниже приведена ссылка на параметры вывода и командной строки:

http://dl.dropbox.com/u/6743276/ffmpeg_probs/stderr.txt

Я думаю, что это тоже ошибка, любой, кто достаточно умен, чтобы разобраться с этим, может захотеть следить за этим трекером: http://roundup.ffmpeg.org/issue2248

1 Ответ

0 голосов
/ 29 сентября 2010

Я только что обнаружил что-то, что делает меня очень красным по лицу !!довольно раздраженно, но не берите в голову:)

Другой пользователь ffmpeg указал, что ffprobe должен выводить больше информации о кадре, что он и сделал.вот ссылка на его полезный совет:

http://forums.creativecow.net/thread/291/71

Используя это, я нашел следующее:

Фактический средний битрейт (данные ffprobe): 8355.2776056338
Actualсредний битрейт (данные ffmpeg vstats): 8406.23275471698
Ffmpeg -vstats avg_br: 7816.3
Воспроизводится выше: 7816.32168421053
Вывод стандартной ошибки Ffmpeg 'bitrate =': 8365.8

Ниже ссылка являетсяразработки:

http://dl.dropbox.com/u/6743276/ffmpeg_probs/ffprobe_vs_ffmpeg-vstats.xlsx

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

...