This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

编码码率、帧率对采集源帧率有什么要求?



DVR_RDK3.5, 8168平台。

我做了一个encoder的程序,分别以SDI和DVI(HDMI)作为输入源,编码后存储到本地文件。偶然发现,当我用SDI(采集帧率为25)输入,targetbitrate=20,

inputFrameRate=60时 产生的文件码率大小为10.2Mb/s, 而当我将inputFrameRate 设置成30时,产生的文件码率却成为了19.2Mb/s。 比在60时还要大,所以我又将输入改成了DVI-HDMI, 测试结果如下:

filesizebit         时间长度/s             平均码率bit/s           targetbitrate     inputFrameRate        采集源类型以及采集帧率

73662464       55.199                   10.2Mb/s                   20M                   60FPS                            SDI-25FPS
99352576       39.566                   19.2Mb/s                   20M                   30FPS                            SDI-25FPS

38797312       59.166                   5.242Mb/s                10M                    60FPS                            SDI-25FPS

62390272       49.666                   9.58Mb/s                  10M                    30FPS                            SDI-25FPS

采集res=1920*1080,SDI采集帧数为25,由上面数据可以看出,在相同 targetbitrate 下,    inputFrameRate 为30时比60时 产生的文件码率大出将近一倍!这是为啥?

我又换成DVI-HDMI输入,结果如下:      

filesizebit       时间长度/s             平均码率bit/s           targetbitrate     inputFrameRate        采集源类型以及采集帧率

30408704       24.366                 9.521Mb/s               20M                     60FPS                          DVI-60FPS

51904512       39.466                10.03Mb/s                20M                     60FPS                          DVI-60FPS

60817408       40.133                11.56Mb/s                20M                     30FPS                          DVI-60FPS

65273856       44.366                11.22Mb/s                20M                     30FPS                          DVI-60FPS

当设置inputFrameRate 分别为30以及60时,产生文件平均码率差别不大。

请问,采集的帧率与压缩编码帧率、码率参数的设置有什么关联吗?请各位帮忙说明下出现上面现象的原因。

附上编码部分参数设置:

pEncPrm->chCreateParams[i].format = IVIDEO_H264HP;
pEncPrm->chCreateParams[i].profile = IH264_HIGH_PROFILE;
pEncPrm->chCreateParams[i].dataLayout = IVIDEO_FIELD_SEPARATED;
pEncPrm->chCreateParams[i].fieldMergeEncodeEnable = FALSE;
pEncPrm->chCreateParams[i].enableAnalyticinfo = 0;

pEncPrm->chCreateParams[i].maxBitRate = 20*1000*1000* 15/10;
pEncPrm->chCreateParams[i].encodingPreset = XDM_DEFAULT;
pEncPrm->chCreateParams[i].rateControlPreset = IVIDEO_STORAGE;
pEncPrm->chCreateParams[i].enableHighSpeed = 0;

pEncPrm->chCreateParams[i].defaultDynamicParams.intraFrameInterval = 150;

pEncPrm->chCreateParams[i].defaultDynamicParams.inputFrameRate = 60;
pEncPrm->chCreateParams[i].defaultDynamicParams.targetBitRate = 20*1000*1000;

pEncPrm->chCreateParams[i].defaultDynamicParams.interFrameInterval = 1;
pEncPrm->chCreateParams[i].defaultDynamicParams.mvAccuracy = IVIDENC2_MOTIONVECTOR_QUARTERPEL;
pEncPrm->chCreateParams[i].defaultDynamicParams.rcAlg = -1;
pEncPrm->chCreateParams[i].defaultDynamicParams.qpMin = 10;
pEncPrm->chCreateParams[i].defaultDynamicParams.qpMax = 40;
pEncPrm->chCreateParams[i].defaultDynamicParams.qpInit = -1;///Initial QP for RC (-1,0-51)
pEncPrm->chCreateParams[i].defaultDynamicParams.vbrDuration = 8;
pEncPrm->chCreateParams[i].defaultDynamicParams.vbrSensitivity = 0;