从IDR或非IDR中取出视频长度(H.264 / AVC - 比特流组织)

时间:2015-10-11 11:40:05

标签: h.264 bytestream

我有一个来自H.264 Chunks的Flash播放器流 - SPS,PPS,IDR和非IDR。到目前为止,FLV结构是从bytearray生成的。留给我的唯一问题是了解我如何获得FLVTag所需的那些时间戳UI24 enter image description here

1 个答案:

答案 0 :(得分:0)

为了获得每个FLVTag的时间:

  1. 首先从SPS文件中获取帧速率,您需要检查 timing_info_present_flag 为1;
  2.   

    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 fps

    之后你得到每帧的毫秒 - > 1/60 = 0.01666(6) 因此,您计算帧数(IDR和NDR)并相应地增加时间戳。对于SPS和PPS帧,我将当前时间戳丢弃到我们当前的位置。