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:特殊视频场景的编码器质量差

Guru**** 2547860 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/615132/dm385-bad-encoder-quality-with-special-video-scenes

器件型号:DM385

您好!

我有疑问。 我已经创建了一个论坛条目("DM385:对于小的 GOP 尺寸、视频流质量差")、我认为这个条目已经解决了。 但我们发现、在非常特殊的视频场景中、我们的视频质量仍然很差。 因此、上次我们只能通过更改配置文件来提高质量、但仍然不是完美的。

我们使用了生成测试图片来提高编码器负载(此图片仍然是编码器1080p @ 60fps 的视频流)。 其效果是、对于如此高的负载上的小 GOP 尺寸、质量会变得更糟。 这种影响似乎与 GOP 尺寸直接相关。 稳定的测试画面恰好根据 GOP 尺寸(请参阅附件)等帧数发生变化、这意味着例如、在 GOP 尺寸为60的情况下、影响每秒发生一次、每秒发生30次、依此类推。 我们还可以看到、这可能发生在某些特殊的"真实"视频场景上、例如 https://www.youtube.com/watch?v=dVkK36KOcqs00:23- 00:40。

是否有人知道造成这种影响的原因? 配置错误?

我已附加了一些使用所有相同目标位速率80000的不同 GOP 尺寸的视频、这些视频显示了问题。

这里也是我用于生成该样本的编码器配置:

              
------ 静态参数---    
 [m3video ]设置 DynamicParams VBR                                                
 [m3video ] videnc2Params -> Size                : 312.(m3video ] videnc2Params ->大小:312。                          
 [m3video ] videnc2Params -> encodingPreset      :3.                            
 [m3video ] videnc2Params -> rateControlPreset   :5.                            
 [m3video ] videnc2Params -> maxHeight           : 1080/                         
 [m3video ] videnc2Params -> maxWidth            : 1920                         
 [m3video] videnc2Params -> dataEndimeas:      1.                            
 [m3video ] videnc2Params -> maxInterFrameInterval:1.                            
 [m3video ] videnc2Params -> maxBitRate          :80000                      
 [m3video ] videnc2Params -> minBitRate          :0                            
 [m3video ] videnc2Params -> inputChromaFormat   :9.                            
 [m3video ] videnc2Params -> inputContentType    :0                            
 [m3video ] videnc2Params -> operatingMode       :1.                            
 [m3video ] videnc2Params ->配置文件             :77                           
 [m3video ] videnc2Params -> Level               :42.                           
 [m3video ] videnc2Params -> inputDataMode       :3.                            
 [m3video ] videnc2Params -> outputDataMode      :3.                            
 [m3video ] videnc2Params -> numInputDataUnits   :1.                            
 [m3video ] videnc2Params -> numOutputDataUnits  :1.    


------ 动态参数---    
 [m3视频]                                                                      
 [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          :80000            
 [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            :16000000       
 [m3video ] rateControlParams -> HRDBufferSize                 : 16000000       
 [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                             
 [m3视频]                                                                      
 [m3视频]                                            

此致、

Andreas

附件:

采用 GOP 5的测试图片:

e2e.ti.com/.../test_5F00_picture_5F00_gop_5F00_5.mp4

采用 GOP 20的测试图片:

e2e.ti.com/.../test_5F00_picture_5F00_gop_5F00_20.mp4

采用 GOP 60的测试图片:

e2e.ti.com/.../test_5F00_picture_5F00_gop_5F00_60.mp4

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

    尊敬的 Andreas:

    我对您有一些问题和建议。

    问题1. 您需要基线/主配置文件还是可以切换到高配置文件? 如果是、我建议您切换到高配置文件。

    问题2. 在我看到的流中、IDR 帧。 是否可以使用 I 帧而不是 IDR?

    问题3. 您能否向我简要介绍一下 GOP 5的用例、换句话说、为什么使用 GOP5?

    问题4. 您能否共享用于对这些流进行编码的输入、我可以进行调整并为您提供更好的配置。

    问题5. 您是否需要编码帧中的切片? 如果是、您需要多少个切片? 我看到 已 启用切片 CodingPreset。

    问题6. 您使用的是哪款 SDK? H.264编码器的版本? 可在编码器发行说明中找到。

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

    Prashanth、您好!

    感谢您的快速重播。 以下是您的问题的答案:

    A1。 是的、我们可以、并且我们将切换到高高度。 但我有点困惑、一位同事在他的承诺消息中写下了不支持高知名度的信息。 您能否确认使用过的 SDK 的 DM385的高配置文件没有问题(请参阅 A6)?

    答2. A4。 我们有以下限制

    视频编码格式

      • (受过培训的基本配置文件)<=我们已经与客户交谈过,我们需要违反此要求
      • 4.2级
      • sps pic order cnt type = 0
      • sps 最大 num ref 帧= 1.
      • 帧中的 PPS 底部字段 pic 顺序存在标志= 1.
      • PPS num ref idx I0默认有效减1 = 0
      • 无 VUI
      • IDR 层:类型7
      • 非 IDR 层:类型5

    SPS 和 PPS 应每秒发送一次、以支持视频输入、分辨率和的快速切换
    帧速率。

    答3. 没有必要使用五常会。 我们仅将其用于测试目的。 我们对视频编码不是很熟悉、也不确定什么是 GOP 的好价值。 我发现这方面的对话很多、但我们发现、对于我们的大多数用例、价值在30到60之间可以获得良好的结果。 我们需要一种配置、即1080p @ 60fps 的任何视频流都可以以大约8 MBit 的数据速率进行编码、并在该限制条件下以最佳质量进行编码。

    问题5. 当我获得创建者的同意时、我将向您提供测试图片。

    A6。

    DVR 参考设计版本 GA-04.00.03。
    H.264编码器02.00.04.01是(适用于 M3独立应用)
    H.264解码器02.00.08.00是(用于 M3独立应用)

    谢谢、

    Andreas

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

    您好、Andreas、

    感谢您提供这些详细信息。 请查看以下回复:

    [引用用户="Andreas Geissler"]A1。 是的、我们可以、并且我们将切换到高高度。 但我有点困惑、一位同事在他的承诺消息中写下了不支持高知名度的信息。 您能否确认 使用 过的 SDK 的 DM385的高配置文件没有问题(请参阅 A6)?[/QUERP]好。 让我们坚持高高度。 它支持。

    [引用用户="Andreas Geissler"]A5。 当我获得创建者的同意时、我将向您提供测试图片。确定。 没问题。  

    [引用用户="Andreas.Geissler"]

    A6。

    DVR 参考设计版本 GA-04.00.03。
    H.264编码器02.00.04.01是(适用于 M3独立应用)
    H.264解码器02.00.08.00是(用于 M3独立应用)

    [/报价]

    A6。 说... 编码器版本02.00.04.01和解码 器02.00.08.00非常旧。

    我建议您切换到最新版本、并在您的身边尝试一下、并与我分享您的观察结果。 不要在升级到最新的编解码器版本后专注于其它方面(A2-A4)。

    最新的 H.264编码器为02.00.09.00、H.264解码器为02.00.20.00。 请联系您当地的 FAE、他/她应向您提供这些套餐。

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

    我将尝试获取最新版本的 H.264编码器和 H.264解码器。 但集成此功能需要一些时间。

    我有权发布测试图片。 那么、这里是:

    我将在编码器为最新时通知您。

    此致、

    Andreas

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    安德烈亚斯
    谢谢。 您是否使用此静态图像进行编码? 如果我将其用作编码器的输入、那是否正常? 您在首次发布时共享的编码流没有任何运动。 如果是、我将根据您的要求进行最佳配置。

    还感谢您开放地集成了最新的编解码器版本。 强烈建议迁移到最新版本。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是的、我将此静态图像用于编码。 当然、您可以将其用作输入、但它已被我们的编码器压缩、因此我不确定这对结果的影响。

    如果您能在考虑给定要求的情况下为我们提供更好的配置、那将是非常好的

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

    安德烈亚斯

    60fps @ 8Mbps 比特率是一件复杂的事情。 请告诉我、您是否可以实现30fps。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    我们要求支持1080p @ 60fps、但没有固定的8Mbps 要求。 支持1080p@60fps 的比特率的实际值是多少?

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

    安德烈亚斯

    对于1080p@60、如果您具有16Mbps、效果会更好。 如果您愿意提高比特率、则质量将会更好。 对于实时1080p、60、您可以使用 aroudn 16-20Mbps。

    用于配置的 PFA。 如果您需要 else.e2e.ti.com/.../1080p_5F00_Quality_5F00_Tune.cfg、请告诉我

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢 Prashanth 的帮助。
    我将应用此配置并更新 H264编码器、并通知您结果。 但是、正如我说过的、这将需要一些时间。

    非常感谢!

    此致、
    Andreas
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢 Andreas、
    集成最新编解码器后、如果您遇到任何类似的问题、请告诉我。 我们可以进一步调节 cfg。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Prashanth、

    我现在已经获得了从 IPNC_RDK-3.9.1中提取的新编码器软件。 但是、现在我在进行编译到映像时收到以下错误消息:

    致命错误:文件
      "/mnt/1424_LHT_Nice/dvrrdk_04.00.00.03/dvr_rdk/../ti_tools/codecs/REL.500.V.
      H264AVC .E.IVAHD.02.00.09.01/500.V.H264AVC .IVAHD.02.00/IVAHD_001/Lib/h264en
      c_ti_host.lib "具有 Tag_abi_PCS_wchar_t 属性
      值为"4"、不同于先前看到的值("2");组合
      不兼容的文件

    我已在 Rules.make 中将 h264enc_DIR:Rel.500.V.H264AVC .E.IVAHD.02.00.04.01替换为 REL.500.V.H264AVC .E.IVAHD.02.00.09.01。 此误差意味着什么? 是否有任何其他依赖关系?

    您能否为我提供编码器环境的测试结果。 看看我们的编码器和您的编码器结果之间的差异?

    此致、

    Andreas

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

    尊敬的 Andreas:

    您可以使用 H.264编码器版本02.00.09.00吗? 这是与您的设置兼容的最新编解码器版本。

    版本02.00.09.01使用不同的 CG-Tools 版本进行编译。

    我将很快分享编码的位流。

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

    Prashanth、您好!

    谢谢你。 通过 H.264编码器版本02.00.09.00、我现在可以构建映像。 我将执行一些测试、以检查差异。 当我获得结果时、我将再次报告。

    此致、

    Andreas

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

    尊敬的 Andreas:

    采样编码流的 PFA。 这是 基本 h264流。 将其重命名为.264e2e.ti.com/.../1080p_5F00_Quality_5F00_Tune.264.txt

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

    Prashanth、您好!

    感谢您提供样本编码流。 但在该视频流中、您还可以看到、在 GOP 大小的频率下、帧是脉冲的。 是否有可能避免这种脉冲?

    我们还使用新的编码器版本进行了一些测试、并调整了部分参数。 但效果并不那么大。 我们可以看到略有差异、但仍需观察脉冲。 它更好,但不是完美的。

    我在查找编码器的所有参数时遇到了一些问题。

    有些参数不是 EncLink_CreateParams 结构的一部分,因为在 encLink_h264.c 中也缺少 dvrrdk 版本和一些参数,或者我只是找不到它们。

    我当前未配置的所有参数都位于附加的文件中。

    此致、

    Andreas

    e2e.ti.com/.../not_5F00_configured.txt

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

    尊敬的 Andreas:

    [引用用户="Andreas.Geissler"]

    但在该视频流中、您还可以看到、在 GOP 大小的频率下、帧是脉冲的。 是否有可能避免这种脉冲? [/报价]

    是的、在 共享的视频中会看到初始1秒(第一个 GOP 频率)的轻微脉冲。 之后、16Mbps 比特率@ 60fps 时不会出现脉冲。 我们将就此向您返回。

    [引用用户="Andreas.Geissler"]

    有些参数不是 EncLink_CreateParams 结构的一部分,因为在 encLink_h264.c 中也缺少 dvrrdk 版本和一些参数,或者我只是找不到它们。

    [/引号]您未找到的参数可以被忽略、因为它们中的大多数将被编解码器本身设置为默认值(预设值设置为0、因此默认设置将在内部设置)。 您可以在 Client\test\src\h264enc_ti_config.c 以及 inc\ih264enc.h 中获取所有参数的详细信息

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Andreas:
    可以在下面设置这些参数、并检查您仍然看到脉冲的天气吗?

    maxBitRate = 2* targetBitrate;
    编码预设= XDM_MED_SPEED_HIGH_QUALITY;
    qpMaxI = 30;
    qpMaxP = 44;
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Prashanth、您好!

    谢谢!

    是的、这似乎提高了质量!

    旧版本(Targetbitrate 8Mbit):

    e2e.ti.com/.../channel4_5F00_v1.4_5F00_small.mp4

    具有 编码预设功能的新版本= XDM_MED_SPEED_HIGH_QUALITY (目标比特率8Mbit):

    e2e.ti.com/.../channel3_5F00_v1.5_5F00_small.mp4

    它看起来要好得多。 但我需要客户确认。 我会告诉您、这是否也会改善他的生命流视频编码。

    此致、

    Andreas