2015-10-11 4 views
0

У меня есть поток для флеш-плеера, который поставляется из блоков H.264 - SPS, PPS, IDR и без IDR. Пока что FLV-структура создается из bytearray. Единственная проблема, оставленная для меня, заключается в том, чтобы понять, как я могу получить эти Timestamp UI24, которые нужны FLVTag. enter image description hereИзвлечь длину видео из IDR или без IDR (H.264/AVC - организация Bitstream)

ответ

0

Чтобы получить время для каждого FLVTag вы делаете:

  1. Сначала получите частоту кадров из SPS-файла, вы должны проверить timing_info_present_flag быть 1;

timing_info_present_flag: 1

num_units_in_tick: 1000

time_scale: 120000

fixed_frame_rate_flag: 1

Так вы считаете, что нравится:

time_scale/(2 * num_units_in_tick) = frame_rate fps; 
120000/

2 * 1000 = 60 кадров в секунду

После этого вы получите милисекунд на кадр -> 1/60 = 0,01666 (6) Таким образом, вы подсчитывать кадры (IDR и NDR), и вы увеличить метку времени, соответственно. Для кадров SPS и PPS я бросаю текущую временную метку туда, где мы сейчас находимся.