2013-04-17 46 views
0

我正在使用libX264庫進行編碼。編碼後的數據是以NAL單元格的形式()......這是我需要的相同格式(AVC),但問題是一個幀進入兩個Nal單元(一幀=(長度,數據)+(長度,數據))和我需要(單幀=(長度,數據)在單一的最終單位)。雖然我轉換成文件然後播放,它顯示屏幕的第一個上部分,然後降低。我的配置參數均低於X264解碼器完成幀不在一個NAL單元中

param.i_width = 1680//; 
param.i_height = 948; 
param.i_fps_num = some no; 
param.i_fps_den = 1; 
param.i_keyint_max = 1 ; 
param.rc.i_rc_method = //; 
param.rc.f_rf_constant = //; 
param.rc.f_rf_constant_max = //; 
param.rc.b_mb_tree = 1; 
param.rc.i_vbv_max_bitrate = ; // Convert to Kbps 
param.rc.i_vbv_buffer_size = param.rc.i_vbv_max_bitrate/param.i_fps_num; 
param.b_repeat_headers = 0; 
param.b_annexb = 0; 

回答

0

需要一個完整的答案WAY的更多信息,而只是一個猜測。如果第一個NALU是AUD(類型9),您可以忽略它。或者不要通過設置b_aud = 0來生成它們。

1

您能發送您的編碼器代碼嗎?通常你應該有下面的代碼:

naluSize=x264_encoder_encode(h, &nal, &i_nal, pic, &pic_out); 
if(naluSize_size>0) 
{ 
    memcpy(Framebuffer, nal[0].p_payload, frame_naluSize); 
    FrameBufferSize= frame_naluSize; 
} 

所以你會有你的編碼框架在Framebuffer和它的大小是在FrameBufferSize。這在我的應用程序中就像一個魅力。

另一個建議是不要碰任何你不知道的參數(至少直​​到你解決你的問題)。只需使用

x264_param_default_preset(&param, "ultrafast", "zerolatency"); 

這會爲您設置很多參數。當然,別忘了設置分辨率:)