imageio 能否从视频中间某帧开始读视频(其它方案也行)

2021-08-28 00:23:26 +08:00
 algas
我的视频稍微有点大,我想同时从视频的不同位置开始读取,并行处理。
但是,目前只能循环 vid.get_data(i) 到需要的目标位置,如果直接给一个比较大的 i,
vid.get_data(i)就会返回全 0 的数据。

不知道有没有什么方法可以快速定位到视频中间的某些位置。

以下是一些信息:

In [2]: import imageio
In [3]: vid=imageio.get_reader('380670.avi','ffmpeg')
In [4]: vid.get_meta_data()
Out[4]:
{'plugin': 'ffmpeg',
'nframes': inf,
'ffmpeg_version': '4.2.2-static https://johnvansickle.com/ffmpeg/ built with gcc 8 (Debian 8.3.0-6)',
'codec': 'rawvideo,',
'pix_fmt': 'pal8',
'fps': 50.0,
'source_size': (832, 832),
'size': (832, 832),
'duration': 12032.6}
1815 次点击
所在节点    Python
5 条回复
LXJ
2021-08-28 09:04:59 +08:00
用 moviepy
emonber
2021-08-28 11:03:46 +08:00
用 OpenCV 或者 PyAV
Juszoe
2021-08-28 11:11:57 +08:00
题外话,考虑一下将 rawvideo 转换成其他编码?用 rawvideo 来存储未免也太大了
algas
2021-08-29 18:32:14 +08:00
@emonber
用 pyav 解决了,av 库里有 seek 函数,定位很快。感谢!
algas
2021-08-29 18:34:58 +08:00
@Juszoe
是超级大,3.5 小时的视频,400GB 的空间....
这个默认格式我现在还改不了它(上游贡献了这么一个玩意),好在视频处理完成后就可以删除了,目前问题还不大。

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

https://www.v2ex.com/t/798447

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

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

© 2021 V2EX