V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
aheadlead
V2EX  ›  问与答

如何用 python 提取视频的任意一帧?

  •  
  •   aheadlead · 2014-08-23 16:39:51 +08:00 · 22642 次点击
    这是一个创建于 3531 天前的主题,其中的信息可能已经有所发展或是发生改变。
    有什么库比较合适
    谢谢
    20 条回复    2015-07-14 12:51:07 +08:00
    skybr
        1
    skybr  
       2014-08-23 16:56:44 +08:00   ❤️ 1
    subprocess ffmpeg/libav
    binux
        2
    binux  
       2014-08-23 16:58:58 +08:00   ❤️ 1
    ffmpeg -ss 00:00:14 -i 1.mp4 -frames:v 1 out1.jpg
    aheadlead
        3
    aheadlead  
    OP
       2014-08-23 17:05:16 +08:00
    @binux
    难道导出成图片再读取?
    binux
        4
    binux  
       2014-08-23 17:06:10 +08:00   ❤️ 1
    ffmpeg -ss 00:00:14 -i 1.mp4 -frames:v 1 -
    binux
        5
    binux  
       2014-08-23 17:06:36 +08:00   ❤️ 2
    @binux ffmpeg -ss %(time)f -i %(path)s -frames:v 1 -f image2 -
    aheadlead
        6
    aheadlead  
    OP
       2014-08-23 20:42:35 +08:00
    @skybr 膜拜大牛...没看懂您的意思啊...
    skybr
        7
    skybr  
       2014-08-23 21:03:00 +08:00   ❤️ 1
    @aheadlead 就是用标准库里的subprocess模块调用ffmpeg/libav, ffmpeg截帧的命令见@binux 给的, 之所以没直接打全是因为不google不man我也记不得。。。。
    ooh
        8
    ooh  
       2014-08-23 21:04:54 +08:00   ❤️ 1
    @aheadlead 难道你说的读取任意一帧不是图片,那是什么?
    aheadlead
        9
    aheadlead  
    OP
       2014-08-23 21:05:09 +08:00
    @skybr
    aheadlead
        10
    aheadlead  
    OP
       2014-08-23 21:05:40 +08:00
    @ooh 我还以为可以不用保存成图片呢....
    aheadlead
        11
    aheadlead  
    OP
       2014-08-23 21:06:12 +08:00
    @ooh 保存成图片"文件"
    ooh
        12
    ooh  
       2014-08-23 21:08:34 +08:00   ❤️ 1
    @aheadlead 浏览器里可以直接输出内容
    aheadlead
        13
    aheadlead  
    OP
       2014-08-23 21:09:04 +08:00
    @ooh 不是很明白 请详细说明 谢谢
    ooh
        14
    ooh  
       2014-08-23 21:14:56 +08:00
    @aheadlead data:image/gif;base64,R0lGODlhAwADAIABAL6+vv///yH5BAEAAAEALAAAAAADAAMAAAIDjA9WADs=
    ruoyu0088
        15
    ruoyu0088  
       2014-08-23 21:16:04 +08:00   ❤️ 1
    zeayes
        16
    zeayes  
       2014-08-23 23:59:33 +08:00
    liberize
        17
    liberize  
       2014-08-24 01:25:48 +08:00 via Android
    OpenCV 貌似不容易定位,而且支持的格式有限。用 subprocess + ffmpeg,如果不想保存成文件,可以参考这篇文章: http://zulko.github.io/blog/2013/09/27/read-and-write-video-frames-in-python-using-ffmpeg/
    ruoyu0088
        18
    ruoyu0088  
       2014-08-24 05:45:55 +08:00
    @liberize,为什么说不容易定义,你遇到过什么困难了吗。我一直都是用VideoCapture.set(CV_CAP_PROP_POS_MSEC, ...),没有出过问题啊。关于支持的格式,我看有一个opencv_ffmpeg249.dll文件,也许ffmpeg支持的都可以吧。这个我不太清楚,不过比较常用的几个我都试过,没有问题。如果能用的话,这个用起来比subprocess要爽多了。
    liberize
        19
    liberize  
       2014-08-24 10:32:26 +08:00 via Android
    @ruoyu0088 好吧,我错了~
    radonwang
        20
    radonwang  
       2015-07-14 12:51:07 +08:00
    @ruoyu0088 你好,我现在在用Opencv抓帧,
    但是在Linux环境下VideoCapture.set一直无法成功,想请教下你有没有相关的解决方案呢?多谢!
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1467 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 17:21 · PVG 01:21 · LAX 10:21 · JFK 13:21
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.