2013-04-17 1 views
0

인코딩 목적으로 libX264 라이브러리를 사용하고 있습니다. 인코딩 데이터는 NAL Unit() ..... 형태로되어 있습니다. 이것은 동일한 형식 (AVC)이지만 문제는 하나의 프레임이 두 개의 Nal Unit (한 프레임 = (길이, 데이터) + (길이, 데이터)) 그리고 필요합니다 (하나의 프레임 = (길이, 데이터) 단일 단위로). 내가 파일로 변환하고 재생하는 동안, 그것은 화면의 첫 번째 부분을 표시하고 낮은. 구성 매개 변수가 아래에 있습니다.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

완전한 대답을 위해서는 자세한 정보가 필요합니다. 첫 번째 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; 
} 

그래서 당신이 프레임 버퍼에서 인코딩 된 프레임이있을 것이다 그 크기가 FrameBufferSize에 : 일반적으로 다음과 같은 코드가 있어야합니다. 이것은 내 응용 프로그램에서 매력처럼 작동합니다.

또 다른 조언은 전혀 모르는 매개 변수를 만지지 않는 것입니다 (적어도 문제를 해결할 때까지). 그냥 사용하십시오

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

이렇게하면 많은 매개 변수가 설정됩니다. 물론, 해상도를 설정하는 것을 잊지 마세요 :)