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

homebrew 安装的 fmpeg 转码速度比较慢?直接编译可以提高速度吗?

  •  
  •   1dian01 · 2023-10-24 11:35:27 +08:00 · 2016 次点击
    这是一个创建于 396 天前的主题,其中的信息可能已经有所发展或是发生改变。
    第 1 条附言  ·  2023-10-24 15:58:10 +08:00
    同一个视频,同样的操作,软件编码器居然快一点,当然 cpu 占用多一些,是否我姿势不对,求各位大佬科普
    硬件编码器状态下:cpu 占用在 30-50%之间,时间 395 秒
    软件编码器状态下:cpu 占用 90%以上,时间 326 秒
    11 条回复    2023-10-25 17:02:18 +08:00
    iGmainC
        1
    iGmainC  
       2023-10-24 12:12:56 +08:00
    arm 的好像要加参数 -hwaccel videotoolbox
    lbp0200
        2
    lbp0200  
       2023-10-24 12:14:24 +08:00
    cutecore
        3
    cutecore  
       2023-10-24 13:44:03 +08:00
    使用硬件编码器,如果你有 n 卡,用 h264_nvenc 会比用 libx264 快很多,十几倍。同样 intel 集显 和 amd 显卡又有对应的编码器
    RangerWolf
        4
    RangerWolf  
       2023-10-24 13:46:30 +08:00
    根据我的经验,不会
    thevita
        5
    thevita  
       2023-10-24 13:55:13 +08:00
    是的,楼上说得对,你需要选一个硬件编码器
    比如我的电脑上

    ```

    ➜ projects ffmpeg -codecs|grep videotoo
    ffmpeg version 6.0 Copyright (c) 2000-2023 the FFmpeg developers
    built with Apple clang version 14.0.3 (clang-1403.0.22.14.1)
    configuration: ****
    libavutil 58. 2.100 / 58. 2.100
    libavcodec 60. 3.100 / 60. 3.100
    libavformat 60. 3.100 / 60. 3.100
    libavdevice 60. 1.100 / 60. 1.100
    libavfilter 9. 3.100 / 9. 3.100
    libswscale 7. 1.100 / 7. 1.100
    libswresample 4. 10.100 / 4. 10.100
    libpostproc 57. 1.100 / 57. 1.100
    DEV.LS h264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (encoders: libx264 libx264rgb h264_videotoolbox )
    DEV.L. hevc H.265 / HEVC (High Efficiency Video Coding) (encoders: libx265 hevc_videotoolbox )
    DEVIL. prores Apple ProRes (iCodec Pro) (encoders: prores prores_aw prores_ks prores_videotoolbox )
    ➜ projects jenv
    ➜ projects ffmpeg -i sss.wmv -c:v hevc_videotoolbox -b:v 5000k -c:a aac sss.mp4

    ```

    可用的 videotoolbox ( 这应该是 apple 视频编码的 api ) encoder 有 这三个

    选 一个就行

    也可以按目标编码看

    ```

    ➜ projects ffmpeg -codecs|grep hevc
    ffmpeg version 6.0 Copyright (c) 2000-2023 the FFmpeg developers
    built with Apple clang version 14.0.3 (clang-1403.0.22.14.1)
    configuration: ****
    .......
    DEV.L. hevc H.265 / HEVC (High Efficiency Video Coding) (encoders: libx265 hevc_videotoolbox )

    ```

    一般

    *_videotoolbox 是 mac 平台的编码器, *_qsv 是 intel 核显的编码器, *_nvenc, *_cuda 是 nv 的硬件编码器,libx265 是软件编码器
    xmap
        6
    xmap  
       2023-10-24 14:32:23 +08:00
    硬件编码器的速度快,但是效果是弱于软件编码器的。
    同等码率下硬件编码器的视频质量更低,同等质量下硬件编码器的体积更大,不可兼得
    1dian01
        7
    1dian01  
    OP
       2023-10-24 15:59:22 +08:00
    @iGmainC @thevita
    同一个视频,同样的操作,软件编码器居然快一点,当然 cpu 占用多一些,是否我姿势不对,求各位大佬科普
    硬件编码器状态下:cpu 占用在 30-50%之间,时间 395 秒
    软件编码器状态下:cpu 占用 90%以上,时间 326 秒
    jim9606
        8
    jim9606  
       2023-10-25 01:02:56 +08:00
    -hwaccel 只影响解码是否使用硬件,不影响编码。

    你如果没有指定编码参数(例如 x264/x265 的 crf/bitrate/qp/preset )会有一套比较快但质量一般的参数,例如 x264 默认用 medium preset 。软件编码器上一般存档和流通用途的话推荐 crf 模式,preset 追求质量一般以 slow 为标杆,具体 crf 数值看 ffmpeg wiki 或者编码器的文档,有推荐经验值。

    硬件编码器也有类似 preset 的选择,通常都很快,例如 NVIDIA 宣称 Turing 架构的 h.264 nvenc high quality preset 可以达到 libx264 medium preset 的水平。除非直播,一般尽量用最高质量的 preset

    ffmpeg -h encoder=编码器名 可以查询可用参数

    评测编码质量是个比较麻烦的事,一般是比 psnr/ssim/vmaf 分数,比较少媒体测这个。
    yinmin
        9
    yinmin  
       2023-10-25 01:16:51 +08:00 via Android
    加参数 -c:v h264_videotoolbox 试试
    julyclyde
        10
    julyclyde  
       2023-10-25 13:09:48 +08:00
    @thevita 你贴的这一段里边,projects 是命令提示符吗?
    感觉没有$符号看起来分不清提示符和用户输入的内容呢
    thevita
        11
    thevita  
       2023-10-25 17:02:18 +08:00
    @julyclyde

    sorry, 是 current directory , 我贴出来才发现,,
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1316 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 00:00 · PVG 08:00 · LAX 16:00 · JFK 19:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.