TI中文支持网
TI专业的中文技术问题搜集分享网站

dm8168 VBR设置问题

我用的drk版本是04.00.00.03,我的encode参数想从CBR设置为VBR,rateControlPreset的设置为IVIDEO_USER_DEFINED
rcAlgo的设置为IH264_RATECONTROL_PRC
那为什么我的码率和帧率没有什么变化呢?

 

Chris Meng:

你好,

无论是CBR还是VBR,TI码率控制算法的策略都是尽量靠近用户设定的目标码率。

请问你想利用VBR实现什么样的效果?

map dog:

回复 Chris Meng:

实现可变帧率,那样图像变化不会影响图像质量

Chris Meng:

回复 map dog:

你好,

IVAHD h264enc是否丢帧,丢多少帧,是用户配置的,相关参数如下:

allowFrameSkipskipDistributionWindowLengthnumSkipInDistributionWindow

图像的质量一般是由QP确定的,固定QP能确保图像质量不变化,但是码率就无法控制。

Ternence_Hsu:

map dog那为什么我的码率和帧率没有什么变化呢?

你把CBR 修改为 VBR 码率肯定是不会变的,帧率也不会变;

但是 VBR 会让你视频的瞬时码率的变化变大的,整体码流基本是不变的;

但瞬间大幅度画面运动,VBR 瞬时码率才变大;这个需要看你的具体场景才可以分析;

map dog:

回复 Ternence_Hsu:

问题是画面大量的运动,码率和帧率还是没有变化

Chris Meng:

回复 map dog:

map dog

问题是画面大量的运动,码率和帧率还是没有变化

你测试的是多少分辨率多少帧,设置的目标码率是多少?VBR只有在目标码率较低的情况下,运动剧烈时,码率增加比较明显。如果码率控制算法能够将码率控制在目标码率之下,那就是看不出码率的变化的。

map dog:

回复 Ternence_Hsu:

下面是enclink的统计信息,你看对吗?

[m3video] ——— CH 2 : H264 ENC : Dynamic Params ——-

[m3video]   

[m3video] videnc2DynamicParams -> inputHeight             : 576  

[m3video] videnc2DynamicParams -> inputWidth              : 704

 [m3video] videnc2DynamicParams -> refFrameRate            : 30000

 [m3video] videnc2DynamicParams -> targetFrameRate         : 25000

 [m3video] videnc2DynamicParams -> targetBitRate           : 256000

 [m3video] videnc2DynamicParams -> intraFrameInterval      : 50

 [m3video] videnc2DynamicParams -> generateHeader          : 0

 [m3video] videnc2DynamicParams -> captureWidth            : 704

 [m3video] videnc2DynamicParams -> forceFrame              : -1

 [m3video] videnc2DynamicParams -> interFrameInterval      : 1  

[m3video] videnc2DynamicParams -> mvAccuracy              : 2

 [m3video] videnc2DynamicParams -> sampleAspectRatioHeight : 1

 [m3video] videnc2DynamicParams -> sampleAspectRatioWidth  : 1  

[m3video] videnc2DynamicParams -> ignoreOutbufSizeFlag    : 1

 [m3video] videnc2DynamicParams -> lateAcquireArg          : -1

 [m3video]   [m3video] rateControlParams -> rateControlParamsPreset        : 1

 [m3video] rateControlParams -> scalingMatrixPreset            : 0

 [m3video] rateControlParams -> rcAlgo                         : 0

 [m3video] rateControlParams -> qpI                            : -1

 [m3video] rateControlParams -> qpMaxI                         : 40

 [m3video] rateControlParams -> qpMinI                         : 10

 [m3video] rateControlParams -> qpP                            : -1  

[m3video] rateControlParams -> qpMaxP                         : 40

 [m3video] rateControlParams -> qpMinP                         : 10  

[m3video] rateControlParams -> qpOffsetB                      : 4

 [m3video] rateControlParams -> qpMaxB                         : 44

 [m3video] rateControlParams -> qpMinB                         : 10

 [m3video] rateControlParams -> allowFrameSkip                 : 0

 [m3video] rateControlParams -> removeExpensiveCoeff           : 0  

[m3video] rateControlParams -> chromaQPIndexOffset            : 0

 [m3video] rateControlParams -> IPQualityFactor                : 0

 [m3video] rateControlParams -> initialBufferLevel             : 4000000

 [m3video] rateControlParams -> HRDBufferSize                  : 4000000

map dog:

回复 Chris Meng:

分辨率是1280×720

帧率是每秒25帧

设置的目标码率是256k

Chris Meng:

回复 map dog:

你好,

1. 请参考xdias里面的ivideo.h, 你现在配置的是CBR。

typedef enum {    IVIDEO_LOW_DELAY = 1,   /**< CBR rate control for video conferencing. */    IVIDEO_STORAGE = 2,     /**< VBR rate control for local storage (DVD)                             *   recording.                             */    IVIDEO_TWOPASS = 3,     /**< Two pass rate control for non real time                             *   applications.                             */    IVIDEO_NONE = 4,        /**< No configurable video rate control                              *  mechanism.                              */    IVIDEO_USER_DEFINED = 5,/**< User defined configuration using extended                             *   parameters.                             */    /** Default setting. */    IVIDEO_RATECONTROLPRESET_DEFAULT = IVIDEO_LOW_DELAY} IVIDEO_RateControlPreset;

2. 你发的参数是704×576不是720p的分辨率。

map dog:

回复 Chris Meng:

我把ivideo.h里面的IVIDEO_RATECONTROLPRESET_DEFAULT 设置成 IVIDEO_STORAGE

然后又在enclink_h264.c的enclink_h264_set_static_params函数里面

把staticParams->videnc2Params.rateControlPreset = IVIDEO_STORAGE;

后还是不行

赞(0)
未经允许不得转载:TI中文支持网 » dm8168 VBR设置问题
分享到: 更多 (0)