Intel® Integrated Performance Primitives
Community support and discussions relating to developing high-performance vision, signal, security, and storage applications.
Announcements
This community is designed for sharing of public information. Please do not share Intel or third-party confidential information here.
6628 Discussions

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

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

Any suggestions for my problem?

Thanks
alexitekako
Beginner
339 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
339 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