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.

[参考译文] DM385:对于小的 GOP 尺寸、视频流质量不佳

Guru**** 2553450 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/596209/dm385-bad-video-stream-quality-for-small-gop-sizes

器件型号:DM385

您好!

我对 DM385编码器的质量有疑问。

我使用了软件编码器来比较 DM385编码器的质量。 软件编码器似乎提供了更好的质量。 我已经尝试对这两种配置使用相同的配置。 也许我忘记了一些东西、或者不可能进行这样的比较?

我们的一位客户抱怨视频流质量不好。

主要配置为:
   目标比特率:  5MBit
   GOP 尺寸:       5.
   视频:             1080p @ 60fps

当然、由于这种硬性限制、即使使用软件编码器、结果也不是完美的。 但仍然优于硬件编码器。 对于1080 @ 60fps 的视频流、应使用什么 GOP 大小和目标比特率来获得"良好"质量。

在测试中、我对 Linux 中的软件编码器使用了以下设置:

FFmpeg  \
  -i ${INPUT_VIDEO}\
  -c:v libx264 \
  -strict-2 \
  -b:v 5000k \
  -x264opts bitrate=5000:VbV-maxrate=5000:VbV-bufsize=10000 \
  -nal -人力资源开发 CBR \
  ss 15 -t 10 \
  -g 5 \
  -framerate 60 \
  -Qmin 8 \
  -Qmax 44 \
  -passlogfile ./enc_dummy.log \
  -CRF 0 \
  ${output_video}_cbr_5.mp4

对于硬件编码器 DM385、我使用了以下配置:

 [m3video ]------ CH 0:H264 ENC:动态参数---                   
 [m3视频]                                                                      
 [m3video ] videnc2DynamicParams -> InputHeight            :1080               
 [m3video ] videnc2DynamicParams -> InputWidth             :1920               
 [m3video ] videnc2DynamicParams -> refFrameRate           :25000              
 [m3video ] videnc2DynamicParams -> targetFrameRate        :60000              
 [m3video ] videnc2DynamicParams -> targetBitRate          :5000000            
 [m3video ] videnc2DynamicParams -> IntraFrameInterval     :5.                  
 [m3video ] videnc2DynamicParams -> generateHeader         :0                  
 [m3video ] videnc2DynamicParams -> CaptureWidth           :1920               
 [m3video ] videnc2DynamicParams -> forceFrame             :-1                 
 [m3video ] videnc2DynamicParams -> InterFrameInterval     :1.                  
 [m3video ] videnc2DynamicParams -> mvAccuracy             : 2.                  
 [m3video ] videnc2DynamicParams -> sampleAstioHeight:1.                  
 [m3video ] videnc2DynamicParams -> sampleAstioWidth :1.                  
 [m3video ] videnc2DynamicParams -> ignoreOutbufSizeFlag   :1.                  
 [m3video ] videnc2DynamicParams -> lateAcquireArg         :-1                 
 [m3视频]                                                                      
 [m3video ] rateControlParams -> rateControlParamsPreset       :1.              
 [m3video ] rateControlParams -> ScalingMatrixPreset           :0              
 [m3video ] rateControlParams -> rcAlgo                        : 0              
 [m3video ] rateControlParams -> QPI                           :-1             
 [m3video ] rateControlParams -> qpMaxI                        : 44.             
 [m3video ] rateControlParams -> qpMinI                        :8.              
 [m3video ] rateControlParams -> qpP                           :-1             
 [m3video ] rateControlParams -> qpMaxP                        :44.             
 [m3video ] rateControlParams -> qpMinP                        :8.              
 [m3video ] rateControlParams -> qpOffsetB                     :4.              
 [m3video ] rateControlParams -> qpMaxB                        :44.             
 [m3video ] rateControlParams -> qpMinB                        :10.             
 [m3video ] rateControlParams -> allowFrameSkip                :1.              
 [m3video ] rateControlParams -> removeExpansiveCoeff          :0              
 [m3video ] rateControlParams -> ChromaQPIndexOffset           :0              
 [m3video ] rateControlParams -> IPQualityFactor               :0              
 [m3video ] rateControlParams -> initialBufferLevel            :10000000       
 [m3video ] rateControlParams -> HRDBufferSize                 : 10000000       
 [m3video ] rateControlParams -> minPicSizeRatioI              :0              
 [m3video ] rateControlParams -> maxPicSizeRatioI              :96             
 [m3video ] rateControlParams -> minPicSizeRatioP              :0              
 [m3video ] rateControlParams -> maxPicSizeRatioP              :0              
 [m3video ] rateControlParams -> minPicSizeRatioB              :0              
 [m3video ] rateControlParams -> maxPicSizeRatioB              :0              
 [m3video ] rateControlParams -> enablePRC                     :1.              
 [m3video ] rateControlParams -> enablePartialFrameSkip        :1.              
 [m3video ] rateControlParams ->丢弃 SavedBits              :1.              
 [m3video ] rateControlParams -> VBRDuration                   :8.              
 [m3video ] rateControlParams -> VBRsensivity                :0              
 [m3video ] rateControlParams -> skipDistributionWindowLength  : 5.              
 [m3video ] rateControlParams -> numSkipInDistributionWindow   :2.              
 [m3video ] rateControlParams -> enableHRDComplianceMode       :1.              
 [m3video ] rateControlParams -> frameSkipThMulQ5              :0              
 [m3video ] rateControlParams -> vbvUseLevelThQ5               :0              
 [m3视频]                                                                      
 [m3video ] interCodingParams -> InterCodingPreset :0                          
 [m3video ] interCodingParams -> searchRangeHorP   :144.                        
 [m3video ] interCodingParams -> searchRangeVerP   :32.                         
 [m3video ] interCodingParams -> searchRangeHorB   :144.                        
 [m3video ] interCodingParams -> searchRangeVerB   :16.                         
 [m3video ] interCodingParams -> InterCodingBias   :1.                          
 [m3video ] interCodingParams -> skipMVCodingBias  :1.                          
 [m3video ] interCodingParams -> minBlockSizeP     :0                          
 [m3video ] interCodingParams -> minBlockSizeB     :0                          
 [m3video ] interCodingParams -> meAlgoMode        :0                          
 [m3视频]                                                                      
 [M3VIDE] IntraCodingParams -> IntraCodingPreset         :0                  
 [m3video ] intraCodingParams -> lumaIntra4x4Enable        : 255                
 [m3video ] intraCodingParams -> lumaIntra8x8启用        :0                  
 [m3video ] intraCodingParams -> lumaIntra16x16Enable      : 15.                 
 [m3video ] intraCodingParams ->色度 Intra8x8启用      : 15.                 
 [m3video ] intraCodingParams ->色度分量启用     :1.                  
 [m3video ] intraCodingParams -> intraRefreshMethod        :0                  
 [m3video ] intraCodingParams -> intraRefreshRate          :0                  
 [m3video ] intraCodingParams -> gdrOverlapRowsBtwFrames   : 0                  
 [m3video ] intraCodingParams ->限制 IntraPredEnable:0                  
 [m3video ] intraCodingParams -> intraCodingBias           :0                  
 [m3视频]                                                                      
 [m3video ] sliceCodingParams -> sliceCodingPreset :1.                          
 [m3video ] sliceCodingParams -> sliceMode         :416                        
 [m3video ] sliceCodingParams -> sliceUnitSize     : 416                        
 [m3video ] sliceCodingParams -> sliceStartOffset  :[-126 1 2]                 
 [m3video ] sliceCodingParams -> streamFormat      :0                          
 [m3视频]                                                                      
 [m3video ] sliceGroupChangeCycle          :3072                               
 [m3video ] searchCenter                   :0                                  
 [m3video ] enableStaticMBCount            :0                                  
 [m3video ] enableROI                      :262400   

 

我们如何提高视频流的质量?

谢谢、

Andreas

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Andreas:
    您能给我以下各项吗?
    输入序列是如何的? 它是否有重运动?
    2.是否可以增加 Intraframe 间隔?
    3.感谢分享所有动态参数。 您还可以共享静态参数吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Prashanth、您好!

    感谢您的快速回复。

    我们将大降压 Bunny 视频用作输入序列和基准。 这是一部卡通电影。 我们可以在开始的场景中看到质量最差的场景、在这里、有许多运动的草地。

    2.在较高的 Intraframe 间隔上,质量变得更好。 但我们已经知道了这一点、但问题是、对于小的 GOP 尺寸、质量不如软件编码器那么好。 我们还可能尝试比较此处的两个完全不同的东西。 什么是良好的 GOP 尺寸值以较小的比特率(~5MBit)获得可接受的质量?

    3、很快就会跟进...

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Andreas:

    感谢您提供详细信息。  

    对于较低的比特率、较小的 GOP 尺寸质量将会很好。 根据您的用例、对 GOP 大小 wrt 至 bitrate 做出决定。 我很想知道软件编码器中实现比特率的天气吗?

    平均值、而对于第3点、您可以尝试设置 EncodingPreset = XDM_HIGH_Quality

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    今天、我们又与客户进行了一次对话。 他告诉我们、这不是一个一般的质量问题、而是一个更不寻常的影响、这也会在高 GOP 尺寸上发生。 我们还可以在我们的地方重现这种影响。 看起来,在缓慢移动时,会出现清晰的画面(如缓慢移动的草地),画面从质量差到质量好,而且不流畅、快速、脉冲的方式。 看起来视频抖动。

    此论坛中是否有可能上传一个示例剪辑、以显示效果?

    #2我将检查是否达到目标比特率。

    3我明天还将检查将编码预设从3更改为1 (XDM_HIGH_STEIN)时的效果。

    顺便说一下、我们使用的是 dvrrdk_04.00.03

    当前静态参数:

    /* 默认 H264编码器设置*/
    1871  pASC->ENC.profile               = ASC_PROFILE_HIGH;
    1872  pASC->ENC.Level                 = IH264_LEVEL_42;
    1873  pASC->ENC.encodingPreset        = 3;  //0=默认值、1=高质量、
    1874                                          年//2=HIGH_SPEED、3=用户定义、
    1875                                          //4=HIGH_SPEED_med_Quality、
    1876                                          //5=med_speed-med_quality、
    1877                                          //6=med_speed_high_quality
    1878  pASC->ENC.maxBitRate            =-1;
    1879
    1880  // IVIDEO_USER_defined 激活 rcAlg
    1881  // 1=LowDelay,2=存储,3=保留,4=无,5=用户定义
    1882  pASC->ENC.rateControlPreset     = IVIDEO_USER_defined;
    1883  pASC->ENC.rcAlg                 = IH264_RATECONTROL_PRC;  //0=VBR (=>IH264_RATECONTROL_PRC)
    1884                                                              //1=CBR (=>IH264_RATECONTROL_PRC_LOW_DELAY)
    1885  pASC->ENC.fieldMergeEncodeEnable = false;
    1886  pASC->ENC.videoMaxDelayM=-1       ;
    1887  pASC->ENC.targetBitRate         = 5000 * 1000; // bit/s
    1888  pASC->ENC.intraFrameInterval    = 5;           // GOP 大小
    1889  pASC->ENC.interFrameInterval    = 1;           //仅 P 帧
    1890  pASC->ENC.mvAccuracy            = IVIDENC2_MOTIONVECTOR_QUARTERPEEL;
    1891  pASC->ENC.qpMin                 = 8;
    1892  pASC->ENC.qpMax                 = 44;
    1893  pASC->ENC.qpInit                =-1;
    1894  pASC->ENC.vbrDuration           = 8;
    1895  pASC->ENC.vbrSensitivity        = 0;

    是否缺少任何静态参数? 我目前没有打印静态编码器设置的函数、因此必须从源复制静态编码器设置。

    谢谢、

    Andreas

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Andreas、

    [报价 USER="Andreas Geissler"]在本论坛中是否有可能上传一个示例剪辑,该剪辑显示了该效果?是的,您可以将编码的示例视频附加到同一个线程中。

    感谢静态参数。 同时确保在 rateControlPreset = IVIDEO_USER_defined 时完成以下设置;

    rateControlParamPreset = 1;

    QPI = 10
    QpP = 5
    qpOffsetB=4
    rcAlgo = 1.
    QpMaxI = 18
    QpMinI = 1
    QpMaxP = 5
    QpMinP = 0
    QpMaxB = 5
    QpMinB = 0

    如果 CBR,初始缓冲区级别= 0.5 * TargetBitrate;

    如果 VBR,HRDBufferSize =  2 * TargetBitrate;

    您能否告诉我您正在使用的编码器版本、您可以在编码器的版本说明中找到它?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Andreas:

    在查看您私下共享的流后、您设置的参数看起来没有生效。 PFA 配置文件。 如我在上一篇文章中所述、尝试设置这些参数也要注意 RC 参数。 您能告诉编码器版本吗?它将在版本说明中?  

    请确保所有这些配置都生效(通过打印).e2e.ti.com/.../Sample_5F00_Encoder_5F00_cofig_5F00_parameters.cfg

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Prashanth、您好!

    非常感谢该配置文件、其中包含所有参数的详细说明。 我将检查我们自己配置的差异、并在质量发生变化时向您提供反馈。 我们发现、配置文件仅配置为基础、而不是高、这已经提高了质量。

    此致、

    Andreas

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我们收到了客户确认此问题已得到解决的确认。 因此、这实际上是配置文件。

    感谢您的大力支持和快速支持。

    平路机、

    Andreas

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Andreas:

    感谢您的更新和关闭本主题。