Как правильно выбирать блоки NAL h264 внутри фрагментированного MP4

Имея поток единиц NAL типов [5 [1]+]+, как правильно ссылаться на них в поле сэмплов блока trun фрагментированного mp4, чтобы они правильно декодировались и представлялись без заиканий?

Основная проблема здесь заключается в том, что не каждый раз, когда один блок NAL сопоставляется с одним кадром I/P/B, часто несколько блоков NAL представляют один и тот же кадр, поэтому неясно, должен ли каждый образец MP4 ссылаться на каждый блок NAL или группу Блоки NAL, относящиеся к одному и тому же кадру I/P/B.

В случае, если я должен ссылаться на каждый блок NAL в отдельном образце MP4, как насчет DTS/PTS/CTS? Чем они должны отличаться, если это все один и тот же кадр?

В случае, если я должен ссылаться на группу единиц NAL, связанных с одним и тем же кадром в одном образце MP4, один и тот же frame_num для последовательных единиц NAL одного и того же типа NAL определяет их как связанные с одним и тем же кадром?


person Alexander Tumin    schedule 22.04.2018    source источник


Ответы (1)


«Кадр», называемый «Единицей доступа» (или AU) в h.264, содержит еще 1 NALU. Trun кодирует размер каждого AU, включая все NALU для этого AU. У NALU нет временных меток, у AU есть.

person szatmary    schedule 22.04.2018
comment
Вопрос не в том, поместить ли несколько единиц NAL в поле trun или в один, мой вопрос касается поля trun выборок: должна ли одна выборка содержать одиночный NAL или полный кадр. - person Alexander Tumin; 23.04.2018
comment
Один образец - это один кадр, который представляет собой одно или несколько значений. - person szatmary; 23.04.2018