2017-02-06 14 views
1

Я хочу знать, что именно заблудится в кодировке H.264. Я кодирую видео с помощью libx264 и декодирую его с помощью ffmpeg, и снова кодирую результирующее видео с помощью libx264 с теми же параметрами и декодируем его во второй раз. Я ожидаю, что первое и второе декодированные видео должны быть одинаковыми по размеру и внешнему виду, однако это не так! Например, у меня 13000 байт в единицах NAL первого фрагмента в первом кодированном фрейме и 12000 байт во втором кодированном фрейме, и это нечетно. Поскольку какая-либо информация о потерях, существовавшая в кадре, должна была быть устранена в первом процессе кодирования, а вторая кодировка должна быть процессом, результатом которого являются те же NAL-единицы. Я ошибаюсь или где-то в моих реализациях, которые я принял?Как libx264 и ffmpeg кодируют и декодируют H.264

+0

Большинство алгоритмов сжатия с потерями не гарантирует, что декодирование и повторное кодирование с одинаковыми параметрами приведут к идентичному выходу. – cdhowie

+0

Есть ли официальная ссылка, которая вызывает эту проблему? –

+0

Что заставляет вас думать, что это проблема? – cdhowie

ответ

6

Этот вопрос нельзя ответить. Потерянные кодеки действительно следует назвать поколенными потерями. Как фотокопировальное устройство, когда-либо поколение слегка изменено. Единственный способ узнать «точно» то, что будет потеряно, - это фактически запустить алгоритм. Современное сжатие состоит из нескольких этапов. Оценка/компенсация движения, квантование, фильтр петли и деблокирование. И сколько информации удаляется на каждом шаге, определяется алгоритмом управления скоростью. Каждый из этих шагов может потерять или даже добавить информацию в зависимости от параметров и содержимого. И может даже отличаться от реализаций кодека.

+0

Спасибо. Можете ли вы объяснить, за исключением шага квантования, как другие части могут продолжать потерять информацию? –

+0

Есть много книг, написанных на эту тему, а также может быть ресурсом в Интернете. Вы должны начать с них, а затем задать конкретные вопросы о stackoverflow. – szatmary