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

关于 windows 下 ffmpeg 的性能

  •  
  •   johnsonshu · 2021-09-28 10:28:03 +08:00 · 3241 次点击
    这是一个创建于 934 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我经常需要从 720p 的视频里抽取幻灯片图片,用了类似下面的参数

    ffmpeg -i XXX.mp4 -r 0.07 image_%d

    但是,一个差不多两小时的视频大概需要 40,50 分钟左右去处理。

    i3_4160 + GT730 的配置。 我知道配置有点弱,但是这处理速度也太离谱了吧。

    我觉得它没用上显卡的硬件加速,但是怎么才能用上呢?

    第 1 条附言  ·  2021-10-04 12:44:45 +08:00
    谢谢大家的回复。
    https://trac.ffmpeg.org/wiki/HWAccelIntro 的 NV 链接里里并没找到我的显卡。
    所以,想要强的硬件加速估计得换显卡。

    说一下我的环境和结果:
    1 ) mp4 在一个机械硬盘,输出目录在固态
    2 )-hwaccel 加上去之后,总体性能提高不大,不过 cpu 使用率大幅减少。
    3 ) 测试结果(根据开始终了时间,手动算时间):
    no hwaccel to null - start
    09:59
    10:13
    end 14min
    -hwaccel auto to null - start
    10:13
    10:38
    end 25min
    no hwaccel qscale:v 31 - start
    10:38
    11:04
    end 26min
    -hwaccel auto qscale:v 31 - start
    11:04
    11:32
    end 28min
    no hwaccel 720p test start
    11:32
    11:59
    end 27min
    -hwaccel auto 720p test start
    11:59
    12:27
    end 28min
    ==============================================

    所用的 windows batch 脚本:
    @echo off

    @del /f /q .\1\*.*
    @del /f /q .\2\*.*
    @del /f /q .\3\*.*
    @del /f /q .\4\*.*

    @echo warm up
    @time /t
    ffmpeg -hwaccel auto -ss 15 -nostats -i XXXX.mp4 -r 0.07 -f null NULL > nul 2> nul
    @time /t
    @echo end

    @echo no hwaccel to null - start
    @time /t
    ffmpeg -ss 15 -nostats -i XXXX.mp4 -r 0.07 -f null NULL > nul 2> nul
    @time /t
    @echo end

    @echo -hwaccel auto to null - start
    @time /t
    ffmpeg -hwaccel auto -ss 15 -nostats -i XXXX.mp4 -r 0.07 -f null NULL > nul 2> nul
    @time /t
    @echo end

    @echo no hwaccel qscale:v 31 - start
    @time /t
    ffmpeg -ss 15 -nostats -i XXXX.mp4 -qscale:v 31 -r 0.07 -f image2 ".\1\pic-%%04d.jpg" > nul 2> nul
    @time /t
    @echo end

    @echo -hwaccel auto qscale:v 31 - start
    @time /t
    ffmpeg -hwaccel auto -ss 15 -nostats -i XXXX.mp4 -qscale:v 31 -r 0.07 -f image2 ".\2\pic-%%04d.jpg" > nul 2> nul
    @time /t
    @echo end

    @echo no hwaccel 720p test start
    @time /t
    ffmpeg -ss 15 -nostats -i XXXX.mp4 -r 0.07 -f image2 .\3\pic-%%04d.jpg > nul 2> nul
    @time /t
    @echo end

    @echo -hwaccel auto 720p test start
    @time /t
    ffmpeg -hwaccel auto -ss 15 -nostats -i XXXX.mp4 -r 0.07 -f image2 .\4\pic-%%04d.jpg > nul 2> nul
    @time /t
    @echo end
    12 条回复    2021-09-29 13:41:32 +08:00
    gainsurier
        1
    gainsurier  
       2021-09-28 10:29:30 +08:00
    你给的信息太少了,视频什么编码,ffmpeg 哪个版本
    mingl0280
        2
    mingl0280  
       2021-09-28 10:30:54 +08:00 via Android
    我看你这个瓶颈应该在硬盘写入速度上……不是没加速。
    zhanggang807
        3
    zhanggang807  
       2021-09-28 10:36:42 +08:00
    -c:v h264_videotoolbox
    用上 GUP 硬解之后你可能会发现还不如软解
    Kagari
        4
    Kagari  
       2021-09-28 10:47:36 +08:00 via Android
    cpu 太旧了,换新平台,6 核起步吧
    mingl0280
        5
    mingl0280  
       2021-09-28 11:08:22 +08:00   ❤️ 1
    @zhanggang807 没用,他那个纯粹是写入性能差。ffmpeg 不指定解码器的时候用 h264 解码 mp4 文件,已经是带帧 /切片级的并行了。如果非要加速的话他应该用 h264_qsv 或者 h264_cuvid (而且要写在-i 前面)
    GrayXu
        6
    GrayXu  
       2021-09-28 11:29:18 +08:00
    ffmpeg 默认调用应该都是软件编解码吧
    GalaDOS
        7
    GalaDOS  
       2021-09-28 11:30:27 +08:00   ❤️ 1
    先试试 ffmpeg -i XXX.mp4 -f null NULL 看看纯解码是什么速度,这个是上限,太慢就换电脑
    再试试 ffmpeg -i XXX.mp4 -qscale:v 31 image_%d.jpg 把输出画质压到最低,如果变快了就是磁盘 IO 的问题,换硬盘或者输出数据量压低一些
    再试试 ffmpeg -i XXX.mp4 -an -vf "framerate=0.07" image_%d.jpg 简化一下编码流程看看有没有救
    zhuangzhuang1988
        8
    zhuangzhuang1988  
       2021-09-28 12:06:23 +08:00   ❤️ 1
    首先关闭杀毒软件.
    holinhot
        9
    holinhot  
       2021-09-28 12:22:55 +08:00
    h264_cuvid
    Zepp
        10
    Zepp  
       2021-09-28 13:03:34 +08:00   ❤️ 7
    去看 ffmpeg 的官方指南吧: https://trac.ffmpeg.org/wiki/HWAccelIntro

    楼上也真乃神人,一堆 encoder 闭上眼张口就来。楼主用的显然不是苹果,你还叫他 h264_videotoolbox 这不是傻吗?还有 cuvid 早就是过去式了,现在的叫 nvenc,当然楼主的卡不一定支持,建议自己调研。
    zvl0reqglvd
        11
    zvl0reqglvd  
       2021-09-28 13:51:03 +08:00
    我用这个一般都不到一秒。不用固态?
    zhanggang807
        12
    zhanggang807  
       2021-09-29 13:41:32 +08:00
    @Zepp 问一句,你们博士都这么说话的么,还是只有你这么说话?
    首先,没细看,楼主非 macOS
    再次 我一直这么用,h264_videotoolbox,仅供楼主参考
    大家在这里提问回答也只是涨见识或者提供参考,话语中有攻击意味这就不对了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   931 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 20:27 · PVG 04:27 · LAX 13:27 · JFK 16:27
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.