我使用libX264库进行编码。编码后的数据是以NAL单位().....的形式。这是我需要的相同格式(AVC)但问题是一帧进入两个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 :(得分: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(¶m, "ultrafast", "zerolatency");
这将为您设置许多参数。当然,不要忘记设置分辨率:)
答案 1 :(得分:0)
需要更多信息以获得完整的答案,但只是一个猜测。如果第一个NALU是AUD(类型9),您可以忽略它。或者不要通过设置b_aud = 0来生成它们。