V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
HOMO114514
V2EX  ›  分享发现

终于在 Handbrake 上复刻出了压制领域真神小丸工具箱的效果

  •  
  •   HOMO114514 · 120 天前 · 2849 次点击
    这是一个创建于 120 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在流媒体视频分发这一块,很长一段时间里小丸工具箱都是唯一真神,因为它有一套极其深度优化的特调压制参数,可以把视频压制到一个惊人的低码率的同时,还能保留非常高的质量。

    不做参数优化的情况下 Handbrake 对于这段视频只有 76 分

    搜了 Handbrake 的很多教程,基本都是教界面怎么用,CRF 调多少,编码器选什么,最多就是把 Profile 调成 Slow ,Preset 调成 High 这种基础动作。

    多数时候,一样的 CRF 获得的视频码率基本是一致的,但最终图像质量却有着天差地别,尤其是当我拍摄一段夕阳或者天空的场景时,能够很明显地看到 Handbrake 色彩断层比小丸更加严重。

    所以琢磨了好一阵子,我终于把小丸的进阶 x264 参数复刻到了 Handbrake 上,使他们拥有一致的 vmaf 评分的同时,在 1080P 下还能获得 50%的编码速度提升:

    这下终于能够在享受现代化的队列管理、灵活的音轨视频轨字幕轨映射的同时,还能获得和小丸一样的压制质量了。

    参数

    保存为 json ,预设→从文件导入

    {
      "PresetList": [
        {
          "AlignAVStart": true,
          "AudioCopyMask": [],
          "AudioEncoderFallback": "av_aac",
          "AudioLanguageList": [
            "any"
          ],
          "AudioList": [
            {
              "AudioBitrate": 256,
              "AudioCompressionLevel": 0,
              "AudioEncoder": "av_aac",
              "AudioMixdown": "stereo",
              "AudioNormalizeMixLevel": false,
              "AudioSamplerate": "auto",
              "AudioTrackQualityEnable": false,
              "AudioTrackQuality": -1,
              "AudioTrackGainSlider": 0,
              "AudioTrackDRCSlider": 0
            }
          ],
          "AudioSecondaryEncoderMode": true,
          "AudioTrackSelectionBehavior": "all",
          "ChapterMarkers": true,
          "ChildrenArray": [],
          "Default": true,
          "FileFormat": "av_mp4",
          "Folder": false,
          "FolderOpen": false,
          "Optimize": true,
          "Mp4iPodCompatible": false,
          "PictureCropMode": 0,
          "PictureBottomCrop": 0,
          "PictureLeftCrop": 0,
          "PictureRightCrop": 0,
          "PictureTopCrop": 0,
          "PictureDARWidth": 1920,
          "PictureDeblockPreset": "off",
          "PictureDeblockTune": "medium",
          "PictureDeblockCustom": "strength=strong:thresh=20:blocksize=8",
          "PictureDeinterlaceFilter": "decomb",
          "PictureCombDetectPreset": "default",
          "PictureCombDetectCustom": "",
          "PictureDeinterlacePreset": "default",
          "PictureDeinterlaceCustom": "",
          "PictureDenoiseCustom": "",
          "PictureDenoiseFilter": "off",
          "PictureSharpenCustom": "",
          "PictureSharpenFilter": "off",
          "PictureSharpenPreset": "medium",
          "PictureSharpenTune": "none",
          "PictureDetelecine": "off",
          "PictureDetelecineCustom": "",
          "PictureColorspacePreset": "off",
          "PictureColorspaceCustom": "",
          "PictureChromaSmoothPreset": "off",
          "PictureChromaSmoothTune": "none",
          "PictureChromaSmoothCustom": "",
          "PictureItuPAR": false,
          "PictureKeepRatio": true,
          "PicturePAR": "auto",
          "PicturePARWidth": 1,
          "PicturePARHeight": 1,
          "PictureWidth": 3840,
          "PictureHeight": 2160,
          "PictureUseMaximumSize": true,
          "PictureAllowUpscaling": false,
          "PictureForceHeight": 0,
          "PictureForceWidth": 0,
          "PicturePadMode": "none",
          "PicturePadTop": 0,
          "PicturePadBottom": 0,
          "PicturePadLeft": 0,
          "PicturePadRight": 0,
          "PresetName": "1080P x264 xiaowan",
          "Type": 1,
          "SubtitleAddCC": false,
          "SubtitleAddForeignAudioSearch": false,
          "SubtitleAddForeignAudioSubtitle": false,
          "SubtitleBurnBehavior": "none",
          "SubtitleBurnBDSub": false,
          "SubtitleBurnDVDSub": false,
          "SubtitleLanguageList": [
            "any"
          ],
          "SubtitleTrackSelectionBehavior": "none",
          "VideoAvgBitrate": 0,
          "VideoColorMatrixCode": 0,
          "VideoEncoder": "x264",
          "VideoFramerateMode": "vfr",
          "VideoGrayScale": false,
          "VideoScaler": "swscale",
          "VideoPreset": "slow",
          "VideoTune": "",
          "VideoProfile": "high",
          "VideoLevel": "auto",
          "VideoOptionExtra": "ref=4:bframes=3:me=umh:keyint=600:min-keyint=1:deblock=1,1:scenecut=60:qcomp=0.5:psy-rd=0.3,0:aq-mode=2:aq-strength=0.8",
          "VideoQualityType": 2,
          "VideoQualitySlider": 24,
          "VideoMultiPass": true,
          "VideoTurboMultiPass": true,
          "x264UseAdvancedOptions": false,
          "PresetDisabled": false,
          "MetadataPassthrough": true
        }
      ],
      "VersionMajor": 56,
      "VersionMicro": 0,
      "VersionMinor": 0
    }
    
    第 1 条附言  ·  119 天前

    补充一些测试结果

    评估方法

    使用VMAF,导出的影片由ffmpeg转为m4v,再通过vmaf cli直接评分

    ffmpeg -i <input> -pix_fmt yuv420p <output>.y4m
    vmaf -r reference.y4m -d target.y4m
    

    所有的压制统一使用CRF 24,NVENC则是CQ 24。

    NVENC H.264的参数和x264差异很大,暂时不想研究怎么套过去,所以直接用了空参数。

    1. FPS游戏录像

    一段Apex Legends的游戏录像,这类视频的特点是3D场景且画面瞬息万变,使得无论是时域还是空域的压缩难度都极高,使用CRF作为码率控制方法时,码率都会偏高。

    由Nvidia即时回放录制,视频设定是1440P@60fps,70Mbps

    使用Davinci Resolve截取片段,并导出为1080P H.264 Master,具体参数可见下图:

    image-20240727170953655

    压制结果

    工具 编码器 预设 参数 速度 码率 VMAF分
    源 (Davinci Resolve) QT H.264 slow / 250 fps 39693 Kbps
    小丸工具箱 x264 / 小丸 58 fps 10607 Kbps 92.113585
    Handbrake x264 slow 小丸 72 fps 11729 Kbps 90.427260
    Handbrake x264 slower 小丸 50 fps 11647 Kbps 90.888737
    Handbrake x264 slow 71 fps 15702 Kbps 93.172524
    Handbrake NVENC H.264 slower 276 fps 28187 Kbps 96.561963

    QQ20240727-162258

    第 2 条附言  ·  119 天前

    2. 手机录像

    使用iPhone 14 Pro Max录制的4K 60fps HDR室内弱光静物,未开启ProRes

    iPhone原相机录制

    Davinci Resolve截取片段,套映射回SDR,并导出为1080P H.265 Master

    image-20240727173642348

    image-20240727173704811

    压制结果

    工具 编码器 预设 参数 速度 码率 VMAF分
    源 (Davinci Resolve) QT H.265 slow / 253 fps 16382 Kbps
    小丸工具箱 x264 / 小丸 56 fps 2740 Kbps 90.903313
    Handbrake x264 slow 小丸 141 fps 2961 Kbps 91.110439
    Handbrake x264 slow 131 fps 3903 Kbps 92.381452
    Handbrake NVENC H.264 slower ~306 fps 14263 Kbps 99.549175

    注:NVENC压制太快,worker还没统计出平均fps就结束了,所以显示fps为0,上表的速度是拿Frames/Time (0.5s精度)估算的

    小丸的VMAF反而是最低的,但它的码率控制始终最强。

    image-20240727175546702

    第 3 条附言  ·  119 天前

    3. 动漫蓝光原盘

    《小林家的龙女仆S》蓝光原盘BD Remux中,截取出OP部分

    第二季龙女仆几乎是我看过的所有番中,原画制作规格最高的,我甚至怀疑接近1080P。

    感谢73ACG的Remux,文件内置了Chapter,通过mkvmerge直接切割得到OP

    mkvmerge -o ref.mkv -s 0 --atracks !1 --split chapters:2,3 '.\Kobayashi-san Chi no Maidragon S S02E01-[1080p][JP.BD.Remux][lolice-mix].mkv'
    

    image-20240727183220853

    压制结果

    工具 编码器 预设 参数 速度 码率 VMAF分
    / / / / 35.1 Mbps
    小丸工具箱 x264 / 小丸 54 fps 3765 Kbps 96.891264
    Handbrake x264 slow 小丸 90 fps 4594 Kbps 96.600525
    Handbrake x264 slow 89 fps 5288 Kbps 96.470555
    Handbrake NVENC H.264 slower 281 fps 8303 Kbps 97.731199

    image-20240727185723558

    唉,小康娜真可爱

    结论

    小丸还是唯一真神。

    使用小丸参数的Handbrake在质量和速度方面获得了综合起来较好的成绩,已经十分接近小丸的质量,

    但slower相比slow牺牲速度换来的质量提升意义不大。

    不携带参数时,x264和NVENC的分数都很高,但是码率都控制不住。

    22 条回复    2024-08-02 14:57:20 +08:00
    shyling
        1
    shyling  
       120 天前
    小丸那套参数确实很强,表面上都是 ffmpeg ,但是我用别的工具确实没那个效果

    改天用用你的。

    有没有具体每个参数的分析啊。
    v7eeaU2MLyWNvp
        2
    v7eeaU2MLyWNvp  
       119 天前
    265 有研究么?我还说以后有机会把我存的各种视频压个 265 呢。265/HEVC 不是说体积比 264 小的更很多么
    acess
        3
    acess  
       119 天前
    楼主的图里有评分么?看来看去好像都没找到……
    jkjoke
        4
    jkjoke  
       119 天前
    感谢分享,测试了一下体积小了很多,画质肉眼几乎看不出变化
    yazoox
        5
    yazoox  
       119 天前
    感谢分享!
    easynote
        6
    easynote  
       119 天前
    mark ,等一个 265
    lazywen
        7
    lazywen  
       119 天前
    handbrake 视频码率默认 1000 左右吧?有点低了
    HOMO114514
        8
    HOMO114514  
    OP
       119 天前
    @lazywen
    Handbrake 出场预设叫 Fast 1080p30 ,使用的设置是
    x264 ,30fps ,22RF ,Fast ,Main ,L4.0
    不知道你说的 1000K 码率从何而来。
    piero66
        9
    piero66  
       119 天前 via Android
    压制组好像都不用 handbrake ,用什么 VapourSynth ,据说效果比 handbrake 特调还能再好点
    piero66
        10
    piero66  
       119 天前 via Android
    我有次拿 handbrake 投稿,被压制组嘲讽了,你可以看下 vcb 的教程 https://guides.vcb-s.com/basics
    icaolei
        11
    icaolei  
       119 天前
    这样一看,NVEnc 的优势太大了,速度和质量都有领先。
    HOMO114514
        12
    HOMO114514  
    OP
       119 天前 via iPhone
    @icaolei
    码率爆炸了,压制的第一个字是首先是压
    nvenc 和 qsv 设计上都是适合 CBR 场景,比如流录制、流直播、jellyfin 等服务器的转码回放,以 CQ 为控制目标用于本地存储的时候体积占用是纯 CPU 的 2 倍
    HOMO114514
        13
    HOMO114514  
    OP
       119 天前 via iPhone
    @piero66
    vcb 的系列教程都看过,handbrake 还是主要给日常工作用途的压片降体积,用 vs 有种牛刀杀鸡的味道,专业的事情、专业的作品发行,还是让专业的人来吧

    我个人认为:
    便捷度 <------------------> 专业度
    Handbrake 小丸 megui 、vs 等
    1423
        14
    1423  
       119 天前
    截图有错误?哪里 76 分?
    malagebidi
        15
    malagebidi  
       119 天前
    怎么小丸就成唯一真神了,如果 x264 的参数都有认真学习过,按理说应该是用 megui 或者命令行,我反正也试过 Handbrake 不止一次,一点感觉都没用出来。
    piero66
        16
    piero66  
       119 天前 via Android
    @HOMO114514 正常直接用达芬奇自带的 encode 流程就够
    GooMS
        17
    GooMS  
       119 天前 via Android
    能导出 ffmpeg 命令吗
    1423
        18
    1423  
       119 天前
    @piero66 #10 看你压什么内容, 动漫 BD 裸压确实可能被视为落后, 但其他内容就不一定了
    icaolei
        19
    icaolei  
       119 天前
    @HOMO114514 #12 确实,压缩率不够,还是挺大的。不过 CQ 相同体积居然能差 2 倍,这个属实没想到能差这么多。我去年在 vidcoder 上用过 NVEnc 和 x265 来对比,当时感觉没差那么多,所以后来我还用 NVEnc 压了不少视频。
    hahazifengzi
        20
    hahazifengzi  
       117 天前
    请问 MAC 上有没有类似小丸工具箱这种工具,压缩效果好画质还保留不错的?刚换 MAC ,一时没找到
    kero991
        21
    kero991  
       116 天前
    想起了我很早以前玩压片时的经历,但当年快压用 mediacoder ,精压要用 avs+megui 啊,当年那个自带不少压片组预设参数的 megui 安装包还让我弄丢了,找了很久没找到
    Kagari
        22
    Kagari  
       113 天前
    我刚想说 n 卡录屏的色域播放时有点问题,然后发现 vmaf 的对比源不是源文件。如果不缩分辨率的话用 LosslessCut 这种关键帧裁剪工具更快
    我最近用 av1 来压,svtav1psy SvtAv1EncApp --rc 0 --preset 4 --qp 45
    如果是 40 系的话直接回放 av1 就行了,更新之后已经支持 av1 了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   968 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 20:16 · PVG 04:16 · LAX 12:16 · JFK 15:16
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.