读取并搜索视频文件,就像它们是pil.image-s的python序列一样。
videosequence的Python项目详细描述
我经常发现自己写的脚本需要从 视频文件,处理它们并将结果保存到磁盘。实施起来很痛苦 一次又一次的视频打开、查找、解码和复杂的Python 装订对我来说有点过分了
视频序列是一个隐藏简单打开视频的复杂性的库。 在python中作为图像序列的文件。它公开了一个视频文件: 包含PIL的python序列类型 Image-s.
例如,假设要转储存储在 foo.mp4从第100帧开始:
fromcontextlibimportclosingfromvideosequenceimportVideoSequencewithclosing(VideoSequence("foo.mp4"))asframes:foridx,frameinenumerate(frames[100:]):frame.save("frame{:04d}.jpg".format(idx))
从序列中加载单个帧也同样容易。我们把期末考试扔了吧 帧到另一个JPEG:
fromcontextlibimportclosingfromvideosequenceimportVideoSequencewithclosing(VideoSequence("foo.mp4"))asframes:frames[-1].save("final-frame.jpg")
一般来说,VideoSequence的行为就像是每个 视频中的帧
视频序列做什么
- 帧精确搜索
- 单帧索引(^ {Tt4} $,^ {TT5}$等)
- 查询视频长度(len(vs))
- 切片帧序列(vs[100:],vs[-20:],vs[10:20], vs[::2]等)
- 帧表示为rgb pilImage对象。
- 可以与numpy互操作。例如np.asarray(vs[0])。
什么视频序列不
- 处理没有一个(且只有一个)视频流的文件
- 音频
注意事项
- 一次向前迭代一帧很快。迭代等技巧 一次向后或跳过n帧可以工作,但可能会很慢。
- 实现基于GStreamer 因此事实上只适用于像linux或freebsd这样的现代unix。
- 那PyGObject introspection 必须安装库。(见下文。)
安装
有关操作系统特定的说明,请参阅下面的部分。视频序列可以是 从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
如果你有一些现代的 桌面环境。如果没有:
$ sudo apt install libgstreamer1.0-dev gstreamer1.0-plugins-good
贡献
错误修复和端口到新的后端欢迎请确保测试 在打开新的拉取请求之前,仍然通过tox传递新功能 请带上测试。
版权和许可
视频序列©2016 Rich Wareham。完整的许可证详细信息可以在 LICENCE.txt文件。