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

2014 年 8 月 23 日
 aheadlead
有什么库比较合适
谢谢
23166 次点击
所在节点    问与答
20 条回复
skybr
2014 年 8 月 23 日
subprocess ffmpeg/libav
binux
2014 年 8 月 23 日
ffmpeg -ss 00:00:14 -i 1.mp4 -frames:v 1 out1.jpg
aheadlead
2014 年 8 月 23 日
@binux
难道导出成图片再读取?
binux
2014 年 8 月 23 日
ffmpeg -ss 00:00:14 -i 1.mp4 -frames:v 1 -
binux
2014 年 8 月 23 日
@binux ffmpeg -ss %(time)f -i %(path)s -frames:v 1 -f image2 -
aheadlead
2014 年 8 月 23 日
@skybr 膜拜大牛...没看懂您的意思啊...
skybr
2014 年 8 月 23 日
@aheadlead 就是用标准库里的subprocess模块调用ffmpeg/libav, ffmpeg截帧的命令见@binux 给的, 之所以没直接打全是因为不google不man我也记不得。。。。
ooh
2014 年 8 月 23 日
@aheadlead 难道你说的读取任意一帧不是图片,那是什么?
aheadlead
2014 年 8 月 23 日
@skybr
aheadlead
2014 年 8 月 23 日
@ooh 我还以为可以不用保存成图片呢....
aheadlead
2014 年 8 月 23 日
@ooh 保存成图片"文件"
ooh
2014 年 8 月 23 日
@aheadlead 浏览器里可以直接输出内容
aheadlead
2014 年 8 月 23 日
@ooh 不是很明白 请详细说明 谢谢
ooh
2014 年 8 月 23 日
@aheadlead data:image/gif;base64,R0lGODlhAwADAIABAL6+vv///yH5BAEAAAEALAAAAAADAAMAAAIDjA9WADs=
ruoyu0088
2014 年 8 月 23 日
zeayes
2014 年 8 月 23 日
liberize
2014 年 8 月 24 日
OpenCV 貌似不容易定位,而且支持的格式有限。用 subprocess + ffmpeg,如果不想保存成文件,可以参考这篇文章: http://zulko.github.io/blog/2013/09/27/read-and-write-video-frames-in-python-using-ffmpeg/
ruoyu0088
2014 年 8 月 24 日
@liberize,为什么说不容易定义,你遇到过什么困难了吗。我一直都是用VideoCapture.set(CV_CAP_PROP_POS_MSEC, ...),没有出过问题啊。关于支持的格式,我看有一个opencv_ffmpeg249.dll文件,也许ffmpeg支持的都可以吧。这个我不太清楚,不过比较常用的几个我都试过,没有问题。如果能用的话,这个用起来比subprocess要爽多了。
liberize
2014 年 8 月 24 日
@ruoyu0088 好吧,我错了~
radonwang
2015 年 7 月 14 日
@ruoyu0088 你好,我现在在用Opencv抓帧,
但是在Linux环境下VideoCapture.set一直无法成功,想请教下你有没有相关的解决方案呢?多谢!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://study.congcong.us/t/129464

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX