2015-07-10 591 views
0

我一直在閱讀關於SPS和PPS的幾篇文章(http://tinyurl.com/nqtfh9a..。)和鏈接(http://www.cardinalpeak.com/blog/the-h-264-sequence-parameter-set/),但無法真正理解。查找幀率SPS

我買了一個SDK的編碼器。在規範中,它給了我這個SPS和PPS,並且我想知道這裏是否有任何幀速率信息:

SPS = 0x00,0x00,0x00,0x01,0x67,0x42,0x00,0x1e,0x9a,0x74爲0x05,0x81表示,0xec,0x80的

我使用的H264分析儀,我得到了這樣的信息:

Found NAL at offset 4 (0x0004), size 10 (0x000A) 
XX 00 00 00 01 67 42 00 1E 9A 74 05 81 EC 80 
==================== NAL ==================== 
forbidden_zero_bit : 0 
nal_ref_idc : 3 
nal_unit_type : 7 (Sequence parameter set) 
======= SPS ======= 
profile_idc : 66 
constraint_set0_flag : 0 
constraint_set1_flag : 0 
constraint_set2_flag : 0 
constraint_set3_flag : 0 
constraint_set4_flag : 0 
constraint_set5_flag : 0 
reserved_zero_2bits : 0 
level_idc : 30 
seq_parameter_set_id : 0 
chroma_format_idc : 1 
residual_colour_transform_flag : 0 
bit_depth_luma_minus8 : 0 
bit_depth_chroma_minus8 : 0 
qpprime_y_zero_transform_bypass_flag : 0 
seq_scaling_matrix_present_flag : 0 
log2_max_frame_num_minus4 : 5 
pic_order_cnt_type : 0 
    log2_max_pic_order_cnt_lsb_minus4 : 6 
    delta_pic_order_always_zero_flag : 0 
    offset_for_non_ref_pic : 0 
    offset_for_top_to_bottom_field : 0 
    num_ref_frames_in_pic_order_cnt_cycle : 0 
num_ref_frames : 1 
gaps_in_frame_num_value_allowed_flag : 0 
pic_width_in_mbs_minus1 : 43 
pic_height_in_map_units_minus1 : 29 
frame_mbs_only_flag : 1 
mb_adaptive_frame_field_flag : 0 
direct_8x8_inference_flag : 1 
frame_cropping_flag : 0 
    frame_crop_left_offset : 0 
    frame_crop_right_offset : 0 
    frame_crop_top_offset : 0 
    frame_crop_bottom_offset : 0 
vui_parameters_present_flag : 0 
=== VUI === 
aspect_ratio_info_present_flag : 0 
    aspect_ratio_idc : 0 
    sar_width : 0 
    sar_height : 0 
overscan_info_present_flag : 0 
    overscan_appropriate_flag : 0 
video_signal_type_present_flag : 0 
    video_format : 0 
    video_full_range_flag : 0 
    colour_description_present_flag : 0 
    colour_primaries : 0 
    transfer_characteristics : 0 
    matrix_coefficients : 0 
chroma_loc_info_present_flag : 0 
    chroma_sample_loc_type_top_field : 0 
    chroma_sample_loc_type_bottom_field : 0 
timing_info_present_flag : 0 
    num_units_in_tick : 0 
    time_scale : 0 
    fixed_frame_rate_flag : 0 
nal_hrd_parameters_present_flag : 0 
vcl_hrd_parameters_present_flag : 0 
    low_delay_hrd_flag : 0 
pic_struct_present_flag : 0 
bitstream_restriction_flag : 0 
    motion_vectors_over_pic_boundaries_flag : 0 
    max_bytes_per_pic_denom : 0 
    max_bits_per_mb_denom : 0 
    log2_max_mv_length_horizontal : 0 
    log2_max_mv_length_vertical : 0 
    num_reorder_frames : 0 
    max_dec_frame_buffering : 0 
=== HRD === 
cpb_cnt_minus1 : 0 
bit_rate_scale : 0 
cpb_size_scale : 0 
    bit_rate_value_minus1[0] : 0 
    cpb_size_value_minus1[0] : 0 
    cbr_flag[0] : 0 
initial_cpb_removal_delay_length_minus1 : 0 
cpb_removal_delay_length_minus1 : 0 
dpb_output_delay_length_minus1 : 0 
time_offset_length : 0 

我試圖從這些信息中獲得的SPS,但我不能獲得同樣的一個。 感謝和親切的問候

回答

1

它可以在SPS中傳達,但它不是強制性的。它在:

SPS - > VUI參數 - >時序信息

如果vui_prameters_present_flag爲1,timing_info_present_flag是1,那麼你希望兩個領域是: 'num_units_in_tick' 和 'time_scale'。第二個鏈接中的示例包含此信息。

如果沒有任何有趣的幀速率技巧,並且當fixed_frame_rate_flag爲1時,那麼您的圖片速率(以fps爲單位)爲: time_scale/num_units_in_tick。

如果您使用的是基於視頻的視頻,那麼這將是一個場頻,因此您必須將其減半才能獲得幀頻。

+0

Hi PeteC!感謝您的回答。我一直在對視頻軌道進行一些分析,並編輯了以前的文章。我獲得「00 1e」,但在此之後,我得到的字節不符合SPS。在第二個鏈接中,有幾個參數似乎有可變位......我怎麼知道有多少個? – bilbinight

+0

只要解析level_idc,就會變得更加複雜。在你鏈接到的表中,「ue(v)」表示一個可變長度的代碼(「指數 - 高爾姆編碼值」)。但是h264分析器轉儲顯示否,SPS中沒有幀速率信息。 每幀仍然有可能與其相關的時間戳(查找「圖片時間SEI消息」),但您的AVC頭沒有作出有關幀速率的任何承諾。 – PeteC