Intel® Integrated Performance Primitives
Deliberate problems developing high-performance vision, signal, security, and storage applications.
6711 Discussions

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

soimattrang
Beginner
474 Views
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
474 Views
Hi,

Any suggestions for my problem?

Thanks
0 Kudos
alexitekako
Beginner
474 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?
0 Kudos
soimattrang
Beginner
474 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-segmenter/
0 Kudos
Reply