【问题标题】:X264 : How to access NAL units from encoder?X264:如何从编码器访问 NAL 单元?
【发布时间】:2014-06-02 22:36:24
【问题描述】:

当我打电话时

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);
        }
     }

那我明白了

我的问题是:

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?

【问题讨论】:

    标签: c video-streaming h.264 x264 libx264


    【解决方案1】:

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

    2) 设置 i_slice_max_size = 1390

    3) 看看 x264.h 中的 x264_param_t。这些设置是相当不言自明的。至于设置profile和preset调用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 有一百万个资源。事实上,如果你编译 x264 并支持 avcodec,那么你的系统上已经有了它。

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

    【讨论】:

    • 谢谢!!感谢您的回答,因为您似乎对 x264 非常了解。我无法对您之前的答案进行投票,因为它们是 cmets(而不是答案)...但我在这里对您的答案进行了投票 :-) 当我将 i_slice_max_size 设置为 1390 时,编码器调用会导致异常。您能否举例说明如何设置参数以使编码器输出最大长度为 1390 的帧?我想通过 UDP 流式传输 X264 视频。另外,您能否指出一些解释如何使用 avcodec 支持编译 x264 静态库的文档?
    • 如果我用 avcodec 支持编译 x264,静态库会内置 swscale api 函数吗? (我在 x264 源档案中的任何地方都没有看到它的头文件。)......对不起,我是这个东西的新手。
    猜你喜欢
    • 1970-01-01
    • 2014-05-13
    • 1970-01-01
    • 1970-01-01
    • 2014-11-18
    • 1970-01-01
    • 1970-01-01
    • 2011-02-06
    • 1970-01-01
    相关资源
    最近更新 更多