读取视频文件并像使用Python中的PIL.Image序列一样查找它们。
项目描述
我经常发现自己需要编写脚本,这些脚本需要从视频文件中加载几个帧,处理它们并将结果保存到磁盘。重复实现视频打开、查找和解码非常痛苦,而复杂的Python绑定对我来说有点过度。
Videosequence是一个库,它隐藏了在Python中将视频文件简单地作为图像序列打开的复杂性。它将视频文件呈现为:一个包含PIL Image-s的Python序列类型。
例如,假设您想从存储在foo.mp4中的视频文件中从第100帧开始转储每个帧
from contextlib import closing
from videosequence import VideoSequence
with closing(VideoSequence("foo.mp4")) as frames:
for idx, frame in enumerate(frames[100:]):
frame.save("frame{:04d}.jpg".format(idx))
您可以像加载单个帧一样轻松地从序列中加载。让我们将最后一帧转储到另一个JPEG中
from contextlib import closing
from videosequence import VideoSequence
with closing(VideoSequence("foo.mp4")) as frames:
frames[-1].save("final-frame.jpg")
总的来说,VideoSequence的行为就像是一个包含视频中每个帧的长列表。
VideoSequence的功能
帧精确查找
单个帧索引(vs[0],vs[-4]等)
查询视频的长度(len(vs))
对帧序列进行切片(vs[100:],vs[-20:],vs[10:20],vs[::2]等)
帧以RGB PIL Image对象表示。
可以与numpy交互。例如np.asarray(vs[0])。
VideoSequence的功能不包括
处理没有恰好一个(并且只有一个)视频流的文件
音频
注意事项
逐帧向前迭代速度很快。向后迭代或每次跳过n帧等技巧也可以使用,但可能较慢。
该实现基于GStreamer,因此实际上仅在类似Linux或FreeBSD的现代Unix系统上运行。
必须安装PyGObject introspection库。(见下文。)
安装
请参阅下文中的特定于操作系统的说明。VideoSequence可以从PyPI安装
$ pip install --user videosequence
也可以直接从git安装
$ pip install --user git+git://github.com/rjw57/videosequence
Ubuntu和Debian
要安装Python GObject绑定
$ sudo apt install gir1.2-gstreamer-1.0 gir1.2-gst-plugins-base-1.0 \
python-gi python3-gi
如果您有某种现代桌面环境,GStreamer几乎肯定已经安装。如果没有
$ sudo apt install libgstreamer1.0-dev gstreamer1.0-plugins-good
贡献
欢迎提交错误修复和新后端的移植。请在提交新的拉取请求之前,确保通过tox测试仍然通过。新的功能应附带测试,请。
版权和许可
Videosequence归Rich Wareham版权所有© 2016。完整的许可详情可以在LICENCE.txt文件中找到。
项目详情
videosequence-1.1.0.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 062e4581f99ea70de42e1907ac87da49f419b91c6ce68e320901109578d3dd7b |
|
MD5 | 0e61021da4b42dbf8c9fd62b36f32266 |
|
BLAKE2b-256 | 0de51888f72156e5d0625283c3d1586a72a58b7ddd715f29247ea10e63af7201 |