OBS AMF

Other source:

MaxNumRefFrames=4 
HighMotionQualityBoostEnable=1 
BReferenceEnable=true 
EnableVBAQ=false 
EnablePreAnalysis=true 
PASceneChangeDetectionEnable=false 
PATemporalAQMode=1 
PAHighMotionQualityBoostMode=1 
PAFrameSadEnable=true

测试结果:

PATemporalAQMode=1 PAHighMotionQualityBoostMode=1 两项消耗较多资源,不适合开启。

OBS Wiki:

https://github.com/obsproject/obs-studio/wiki/AMF-Options

AMF配置定义:

HEVC: https://github.com/GPUOpen-LibrariesAndSDKs/AMF/blob/master/amf/public/include/components/VideoEncoderHEVC.h

AVC: https://github.com/GPUOpen-LibrariesAndSDKs/AMF/blob/master/amf/public/include/components/VideoEncoderVCE.h

H264

MaxNumRefFrames=4 HighMotionQualityBoostEnable=1 BReferenceEnable=true EnableVBAQ=false EnablePreAnalysis=true PASceneChangeDetectionEnable=false PAFrameSadEnable=true FillerDataEnable=false EnforceHRD=true MinQP=13 MaxQP=27 PeakBitrate=8000000 VBVBufferSize=20000000

配合 VBR 码率控制

MaxNumRefFrames=4 HighMotionQualityBoostEnable=1 BReferenceEnable=true EnableVBAQ=true EnablePreAnalysis=false FillerDataEnable=false EnforceHRD=true MinQP=0 MaxQP=32 PeakBitrate=10485760 VBVBufferSize=10485760
  • 码率控制中,QP 范围优先于 Bitrate

  • 在 VBR 中,AMF 会尝试保持 QP 稳定,如果画面突然变得变化更剧烈,所需码率增大,则缓慢提升 QP 来将码率降回指定码率。此 QP 变化范围受相应参数限制。

    • 在指定了 PeakBitrate 和 VBVBufferSize 的情况下,会严格将码率限制在 PeakBitrate 内,同时超出平均码率的部分会消耗 BufferSize,消耗完毕后强制回归平均码率。

    • PeakBitrate 和 VBVBufferSize 的单位是 bits

    • 如不指定这两个参数,其默认值较少,以致无法显著超出平均码率。

如何限制在 10M 以内:

kirin lemon: QP=32~35

karby 海盗船8人团队战下雨:QP=42

画质,以海盗船下雨时屏幕文字为例:30可以接受,32有点劣化,35很明显

35,文字明显劣化

35,文字明显劣化


32文字好一些

32文字好一些


30更好一些

30更好一些


H265

HevcMaxNumRefFrames=4 HevcHighMotionQualityBoostEnable=1 HevcEnableVBAQ=false HevcEnablePreAnalysis=true PASceneChangeDetectionEnable=false PAFrameSadEnable=true HevcFillerDataEnable=false HevcEnforceHRD=true HevcMinQP_I=1 HevcMinQP_P=10 HevcMaxQP_I=35 HevcMaxQP_P=30 PeakBitrate=16777216 VBVBufferSize=67108864 HevcInitialVBVBufferFullness=0

配合 VBR 码率控制