关于x264编码帧,单个nalu还是多个nalu的问题

来源:互联网 发布:实名淘宝号购买 编辑:程序博客网 时间:2024/06/05 06:12

视频帧分为:一个视频帧只有一个slice 和一个视频帧由多个slice组成两种情况。 如图所示:

一个视频帧只有一个slice


一个视频帧由多个slice组成



对于单个cpu来说,我们要让编码帧都是单个slice,而非多个slice的话,可以设置264编码的线程参数param->i_threads = 1, 就可以保证单个slice。

而对于多个cpu来说,因为我用的服务器是多个cpu,所以这是设置线程数param->i_threads = 1;仍然不起作用,还是会生成多个slice。

而其中一个参数可以直接解决这个问题,就是关掉slicethread就可以了param->b_sliced_threads = 0; 此时,不管用在什么地方,都是单个slice的视频帧。

而这个参数只有在使用了zerolatency的情况下才会被开启。所以大家在使用zerolatency的时候要注意是否会因为多slice导致自己的处理逻辑有问题


尤其是对于推rtmp流的使用者来说,只生成单个slice是简单的。多个slice的可用性我还没有做实验。以后有机会可以试一试。



from: http://blog.csdn.net/wupengqiangqinli/article/details/51200927
原创粉丝点击