Cra*_*aig 2 video-streaming bitrate x264
我们在视频会议项目中使用x264编码器,我们具有基本的流视频功能,但是,在理解各种速率控制设置如何确定最终比特率时遇到了麻烦。我们设置以下参数:
x264_param_t params;
x264_param_default_preset(¶ms, "ultrafast", "zerolatency");
params.i_threads = 1;
params.i_width = width;
params.i_height = height;
params.i_fps_num = fps;
params.i_keyint_max = fps;
params.b_intra_refresh = 1;
params.b_repeat_headers = 1;
params.b_annexb = 1;
//Set rate control stuff here
x264_param_apply_profile(¶ms, "baseline");
Run Code Online (Sandbox Code Playgroud)
如果仅设置params.rc.i_bitrate参数,则编码器似乎会严重超出比特率。如果我们设置i_vbv_max_bitrate和i_vbv_buffer_size参数,我们将看到一个比特率达到i_vbv_max_bitrate设置的峰值(有时过冲)。显然,严格控制比特币对视频会议很重要,但是文档是不透明的。还有其他人使用x264进行视频会议吗?您如何设置编码器?任何帮助表示赞赏,在此先感谢。
如果您处于低延迟视频会议模式下以实现最小的抖动和可靠的性能,则需要处于CBR模式而不是VBR模式。VBR模式可提供实时低延迟系统无法处理的起伏和峰值。
有用于低延迟视频通信/监视应用程序的专用vbr算法,但是x264没有。因此,请勿使用其vbr。它的vbr用于存储。
有一个--nal-hrd cbr来启用cbr
由于事情是统计的,因此您无法保证比特率不会超出某个点。但是,只要满足某些假设,就可以将其控制在99%的时间中。
从质量角度来看,您的vbv缓冲区大小必须是可以处理的最小大小,有两个目的1.不允许比特率有太大变化2.减少端到端延迟这是编码器假定在解码器侧可用的缓冲。越小质量越差。找到您可以处理的最小值。
vbv最大比特率需要设置为cbr目标比特率值。这是rc的准则,即这是允许的最大瞬时比特率。将其设置为目标比特率。记住它的准则。由于视频的统计性质,它可能会过高。
确保进行帧内刷新,因此I图片已关闭。
如果不覆盖某些设置,使用“超快速”可能不是一个好的预设。显式设置您的参考图片,b图片,配置文件。将您和我的子级别设置为更高的级别。[如果我是你,那是最高的水平]。这是您被枪杀的原因之一。因此,编码器无法做好工作。当编码器使我和我更好时,它需要较少的位来编码发生爆炸的坚硬部分!通常,不懂视频的人不会得到这个。他们一直在问为什么我/次要因素对比特率和突发事件有影响。相信我。当困难的部分用于编码时,您得到多少射击完全取决于编码器的算法,而我是关键的算法之一。
查看您需要使用的配置文件。Cabac最多可提高20%。因此,如果您可以做主要的个人资料,那就去做。仅使用1张参考图片,而不使用B张图片。但是,如果可以使用cabac来获得比特率优势,绝对没有害处。
编辑:一般来说,没有魔术药。以上是多年从事多媒体工作和理解视频所获得的建议。但是,您仍然需要进行一些尝试才能在质量/延迟和系统特定的其他约束之间找到最佳设置。在对术语进行调整之前,请确保您理解这些术语,否则您将永远绕圈子。还记得视频是统计的。没有任何事情会一直都是完美的100%。
| 归档时间: |
|
| 查看次数: |
6587 次 |
| 最近记录: |