Определите продолжительность кадра H.264

Одно видеосообщение RTMP обычно содержит один кадр H.264 вместе с дельтой метки времени. Обычно дельта временной метки представляет продолжительность одного видеокадра, например. 40 мс для видео 25 кадров в секунду. Это позволяет вычислить продолжительность потока путем вычисления суммы дельт видео RTMP в потоке.

Однако для некоторых кодировщиков (например, Wirecast) время от времени появляются видеосообщения RTMP, которые содержат только один кадр H.264, но дельта метки времени кратна длительности одного видеокадра (например, 120 мс, 160 мс и т. д.).

Означает ли это, что в некоторых случаях один кадр H.264 может представлять несколько видеокадров? Какая метаинформация (поле) кадра H.264 представляет это? Как отличить, что для выбранного кадра дельта метки времени должна отличаться от продолжительности одного видеокадра? Я хотел бы правильно рассчитать временную метку презентации для одного кадра H.264.


person Orr151    schedule 21.04.2017    source источник


Ответы (1)


Скорее всего это пропущенные кадры. Для RTMP вы всегда должны предполагать переменную частоту кадров (независимо от того, что сказано в метаданных)

person szatmary    schedule 21.04.2017
comment
Спасибо! Это имеет смысл. Можно ли заполнить пробел (пропущенные кадры) некоторыми искусственными кадрами H.264 (например, клонированным кадром, который несет более высокую отметку времени, указывающую на отсутствующие кадры, или путем создания кадра данных заполнения)? Это был бы способ сохранить постоянную частоту кадров. - person Orr151; 22.04.2017
comment
Это возможно, но это будет много работы. (По сути, переписывая битовый поток) было бы лучше потратить время на исправление проигрывателя, чтобы он правильно воспроизводил потоки с переменной частотой кадров. - person szatmary; 22.04.2017