Hi,
I have implemented the H264VideoStreamer subclass and am able to successfully unicast stream to a single VLC client. For this I had modified the live sdp generation code to exclude the fmtp:... line from the returned describe response for H264. In this case I am able to play the streamed content using MPlayer or VLC client. If I pass the profile level id "profile_level_id" and "sprop_parameter_sets_str" parameters to "H264VideoRTPSink::createNew()" as suggested and ensure that the sdp returned contains the correct fmtp: line -"a=fmtp:97 packetization-mode=1;profile-level-id=000042;sprop-parameter-sets=Z0Ligqwewo 3FkkBaHsuG,aMOOOOKCrA==" then my vlc client is not able to play the stream.(I am also unable to play using MPlayer) I have extracted the profile level id and sps and pps and using h264analyzer tool. Also I have base64 encoded the sps and pps as stated in the rfc-3984. I suspect that the vlc client is able to play the h264 stream when it extracts the decoder parameters from the rtp stream itself (in band; we are transmitting NAL units 7 and 8 (sps and pps) also over RTP). But if we try to provide the profile id and sprop_parameters over sdp (while also streaming the NAL packets 7 and 8 over rtp as before) then even a single requesting client is unable to play the stream. Maybe the presence of the fmtp: line stops the client from looking for this information within the stream. But the fmtp: line provided by us is not intelligible enough to the client to successfully play the stream. As our actual requirement is to unicast stream to multiple clients (reuseFirstSource is set to True) and also stream multicast we need to communicate using the sdp, the in band mechanism is not sufficient and also not reliable. I have attached our sdp and NAL frame (contains NAL units 7 and 8) alongwith the mail. We may be missing some needed information in sdp or we might be communicating it in the wrong format or I might be totally mistaken:-). Could you tell us the correct sdp fmtp line to generate or any pointers to missing or incorrect information in our sdp? I have attached ethereal extracted sdp description and NAL packet extracted from h264 analyzer.Please check the attached text file. Regards Soumya LGSI
OPTIONS rtsp://172.24.2.192:8554/h264ESVideoTest RTSP/1.0 CSeq: 1 User-Agent: VLC media player (LIVE555 Streaming Media v2007.02.20) RTSP/1.0 200 OK CSeq: 1 Date: Sun, Feb 01 2004 12:28:47 GMT Public: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE DESCRIBE rtsp://172.24.2.192:8554/h264ESVideoTest RTSP/1.0 CSeq: 2 Accept: application/sdp User-Agent: VLC media player (LIVE555 Streaming Media v2007.02.20) RTSP/1.0 200 OK CSeq: 2 Date: Sun, Feb 01 2004 12:28:47 GMT Content-Base: rtsp://172.24.2.192:8554/h264ESVideoTest/ Content-Type: application/sdp Content-Length: 464 v=0 o=- 1075638501409761 1 IN IP4 172.24.2.192 s=LIVE555 Streaming Media v i=h264ESVideoTest t=0 0 a=tool:LIVE555 Streaming Media v2008.02.08 a=type:broadcast a=control:* a=range:npt=0- a=x-qt-text-nam:LIVE555 Streaming Media v a=x-qt-text-inf:h264ESVideoTest m=video 0 RTP/AVP 97 c=IN IP4 0.0.0.0 a=rtpmap:97 H264/90000 a=fmtp:97 packetization-mode=1;profile-level-id=000042;sprop-parameter-sets=Z0Ligqwewo3FkkBaHsuG,aMOOOOKCrA== a=control:track1 SETUP rtsp://172.24.2.192:8554/h264ESVideoTest/track1 RTSP/1.0 CSeq: 3 Transport: RTP/AVP;unicast;client_port=1300-1301 User-Agent: VLC media player (LIVE555 Streaming Media v2007.02.20) RTSP/1.0 200 OK CSeq: 3 Date: Sun, Feb 01 2004 12:28:47 GMT Transport: RTP/AVP;unicast;destination=172.24.3.51;source=172.24.2.192;client_port=1300-1301;server_port=6970-6971 Session: 1 PLAY rtsp://172.24.2.192:8554/h264ESVideoTest/ RTSP/1.0 CSeq: 4 Session: 1 Range: npt=0.000- User-Agent: VLC media player (LIVE555 Streaming Media v2007.02.20) RTSP/1.0 200 OK CSeq: 4 Date: Sun, Feb 01 2004 12:28:47 GMT Range: npt=0.000- Session: 1 RTP-Info: url=rtsp://172.24.2.192:8554/h264ESVideoTest/track1;seq=36633;rtptime=3233632592
!! Found NAL at offset 4 (0x0004), size 10 (0x000A) ==================== NAL ==================== forbidden_zero_bit : 0 nal_ref_idc : 3 nal_unit_type : 7 ( Sequence parameter set ) ======= SPS ======= profile_idc : 66 constraint_set0_flag : 1 constraint_set1_flag : 0 constraint_set2_flag : 0 constraint_set3_flag : 0 reserved_zero_4bits : 0 level_idc : 30 seq_parameter_set_id : 0 chroma_format_idc : 0 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 : 12 pic_order_cnt_type : 0 log2_max_pic_order_cnt_lsb_minus4 : 11 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 : 44 pic_height_in_map_units_minus1 : 29 frame_mbs_only_flag : 1 mb_adaptive_frame_field_flag : 0 direct_8x8_inference_flag : 0 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 initial_cpb_removal_delay_length_minus1 : 0 cpb_removal_delay_length_minus1 : 0 dpb_output_delay_length_minus1 : 0 time_offset_length : 0 !! Found NAL at offset 18 (0x0012), size 4 (0x0004) ==================== NAL ==================== forbidden_zero_bit : 0 nal_ref_idc : 3 nal_unit_type : 8 ( Picture parameter set ) ======= PPS ======= pic_parameter_set_id : 0 seq_parameter_set_id : 0 entropy_coding_mode_flag : 0 pic_order_present_flag : 0 num_slice_groups_minus1 : 0 slice_group_map_type : 0 num_ref_idx_l0_active_minus1 : 0 num_ref_idx_l1_active_minus1 : 0 weighted_pred_flag : 0 weighted_bipred_idc : 0 pic_init_qp_minus26 : 0 pic_init_qs_minus26 : 0 chroma_qp_index_offset : 0 deblocking_filter_control_present_flag : 0 constrained_intra_pred_flag : 0 redundant_pic_cnt_present_flag : 0 transform_8x8_mode_flag : 1 pic_scaling_matrix_present_flag : 0 second_chroma_qp_index_offset : 16 !! Found NAL at offset 26 (0x001A), size 33587 (0x8333) ==================== NAL ==================== forbidden_zero_bit : 0 nal_ref_idc : 3 nal_unit_type : 5 ( Coded slice of an IDR picture ) ======= Slice Header ======= first_mb_in_slice : 0 slice_type : 7 ( I slice only ) pic_parameter_set_id : 0 frame_num : 0 field_pic_flag : 0 bottom_field_flag : 0 idr_pic_id : 0 pic_order_cnt_lsb : 0 delta_pic_order_cnt_bottom : 0 redundant_pic_cnt : 0 direct_spatial_mv_pred_flag : 0 num_ref_idx_active_override_flag : 0 num_ref_idx_l0_active_minus1 : 0 num_ref_idx_l1_active_minus1 : 0 cabac_init_idc : 0 slice_qp_delta : 2 sp_for_switch_flag : 0 slice_qs_delta : 0 disable_deblocking_filter_idc : 0 slice_alpha_c0_offset_div2 : 0 slice_beta_offset_div2 : 0 slice_group_change_cycle : 0 === Prediction Weight Table === luma_log2_weight_denom : 0 chroma_log2_weight_denom : 0 luma_weight_l0_flag : 0 chroma_weight_l0_flag : 0 luma_weight_l1_flag : 0 chroma_weight_l1_flag : 0 === Ref Pic List Reordering === ref_pic_list_reordering_flag_l0 : 0 ref_pic_list_reordering_flag_l1 : 0 === Decoded Ref Pic Marking === no_output_of_prior_pics_flag : 0 long_term_reference_flag : 0 adaptive_ref_pic_marking_mode_flag : 0
_______________________________________________ live-devel mailing list live-devel@lists.live555.com http://lists.live555.com/mailman/listinfo/live-devel