繁体   English   中英

X264:如何从编码器访问NAL单元?

[英]X264 : How to access NAL units from encoder?

我打电话的时候

frame_size = x264_encoder_encode(encoder, &nals, &i_nals, &pic_in, &pic_out);

然后将每个NAL写入如下文件:

     if (frame_size >= 0)
     {
        int i;
        int j;

        for (i = 0; i < i_nals; i++)
        {
           printf("******************* NAL %d (%d bytes) *******************\n", i, nals[i].i_payload);
           fwrite(&(nals[i].p_payload[0]), 1, nals[i].i_payload, fid);
        }
     }

然后我明白了

NAL文件的开头

我的问题是:

1)文件开头的可读参数是否正常?

2)如何配置X264编码器,以便编码器返回可以通过UDP发送的帧,而不会使数据包碎片化(大小必须低于1390或其周围)。

3)使用x264.exe我传递了以下选项:

"--threads 1 --profile baseline --level 3.2 --preset ultrafast --bframes 0 --force-cfr --no-mbtree --sync-lookahead 0 --rc-lookahead 0 --keyint 1000 --intra-refresh" 

如何将这些映射到X264参数结构中的设置? (x264_param_t)

4)我被告知x264静态库不支持对编码器的位图输入,并且我必须使用libswscale将24位RGB输入位图转换为YUV2。 据推测,编码器只接受YUV2作为输入? 这是真的? 如果是这样,我如何为x264静态库构建libswscale?

1)是的。 x264自动包含。 它是一个SEI切片,如果你愿意,你可以扔掉它。

2)设置i_slice_max_size = 1390

3)看一下x264.h中的x264_param_t. 这些设置相当自我解释。 至于设置配置文件和预设调用int x264_param_apply_profile( x264_param_t *, const char *profile )int x264_param_default_preset( x264_param_t *, const char *preset, const char *tune )

4)是的,这是真的,我说的时候我想说谎。 在线查看堆栈溢出,在编译ffmpeg时有一百万个资源。 事实上,如果您使用avcodec支持编译x264,那么您已经在系统上使用了它。

5)是的!,你应该是一个好的堆栈溢出公民和投票,并接受答复形式的人捐赠那里的空闲时间和知识(需要数年才能获得)来帮助你。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM