Community
cancel
Showing results for 
Search instead for 
Did you mean: 
soimattrang
Beginner
254 Views

help correct the H264 encoder parameters for HTTP Live streaming (solved)

Hi everyone,
Please help me this problem:
I'm developing a application that capture computer desktop and streaming video to Iphone using HTTP Live Streaming. My app capture the desktop and encode the series of image using Intel IPP version 7.0.6.060 and then use the videomuxer to generate a MPEG2-ts stream file (.ts file). I also developed a simple Video file segmenter to segment a big .ts file to serveral small .ts file (see the attachment: out_-1.ts, out_-2.ts). My problem is here, when i do segmentation the big .ts file, then only the first small .ts file (out_-1.ts) can be play by VLC, the others file cannot be play. I used the ffprobe (can download here: http://ffmpeg.zeranoe.com/builds/) to analysis and received results: "decode slice header error. non existing PPS referenced". It looks like the encoder makes SPS/PPS only one time at the beginning of a stream.

here is my configuration for H.264 encoder:

m_EncoderParam.num_slices = 1;
m_EncoderParam.B_frame_rate = 0;
m_EncoderParam.treat_B_as_reference = 0;
m_EncoderParam.num_ref_frames = 2;
m_EncoderParam.num_ref_to_start_code_B_slice = 0;
m_EncoderParam.num_slices = 1;
m_EncoderParam.key_frame_controls.method = 1;
m_EncoderParam.key_frame_controls.interval = 10;
m_EncoderParam.key_frame_controls.idr_interval = 0;
m_EncoderParam.profile_idc = UMC::H264_PROFILE_HIGH;
m_EncoderParam.level_idc = 0;
m_EncoderParam.info.framerate = 15;
m_EncoderParam.chroma_format_idc = 1;
m_EncoderParam.bit_depth_chroma = 8;
m_EncoderParam.bit_depth_luma = 8;
m_EncoderParam.aux_format_idc = 0;
m_EncoderParam.bit_depth_aux = 8;
m_EncoderParam.alpha_incr_flag = 0;
m_EncoderParam.alpha_opaque_value = 0;
m_EncoderParam.alpha_transparent_value = 0;
m_EncoderParam.rate_controls.method = (UMC::H264_Rate_Control_Method)2;
m_EncoderParam.rate_controls.quantB = 30;
m_EncoderParam.rate_controls.quantI = 30;
m_EncoderParam.rate_controls.quantP = 30;
m_EncoderParam.info.clip_info.width = 960;
m_EncoderParam.info.clip_info.height = 640;
m_EncoderParam.info.bitrate = 1000000;
m_EncoderParam.mv_search_method = 2;
m_EncoderParam.me_split_mode = 0;
m_EncoderParam.me_search_x = 8;
m_EncoderParam.me_search_y = 8;
m_EncoderParam.use_weighted_pred = 0;
m_EncoderParam.use_weighted_bipred = 0;
m_EncoderParam.use_implicit_weighted_bipred = 0;
m_EncoderParam.direct_pred_mode = 1;
m_EncoderParam.use_direct_inference = 1;
m_EncoderParam.deblocking_filter_idc = 0;
m_EncoderParam.deblocking_filter_alpha = 0;
m_EncoderParam.deblocking_filter_beta = 0;
m_EncoderParam.transform_8x8_mode_flag = true;
m_EncoderParam.use_default_scaling_matrix = 0;
m_EncoderParam.qpprime_y_zero_transform_bypass_flag = 0;
m_EncoderParam.entropy_coding_mode = 1;
m_EncoderParam.cabac_init_idc = 2;
m_EncoderParam.coding_type = 0;
m_EncoderParam.m_QualitySpeed = 1;
m_EncoderParam.quant_opt_level = 0;
m_EncoderParam.numThreads = 1;

Thanks in advance!

0 Kudos
3 Replies
soimattrang
Beginner
254 Views

Hi,

Any suggestions for my problem?

Thanks
alexitekako
Beginner
254 Views

Hi,
Sounds like the problem is in segmenter. I would say that first frame in each segment should be IDR frame containing SPS, PPS. Try adding that in Your segmenter.
Can You post code?
soimattrang
Beginner
254 Views

Hi,

The segmenter work fine with X264 FFMPEG, so the problem is not in segmenter. I can't post code, but you can reference to: http://www.ioncannon.net/programming/452/iphone-http-streaming-with-ffmpeg-and-an-open-source-segmen...
Reply