有什么好的Python库来处理视频文件的帧?
5 个回答
2
我最近在研究使用py.processing来做类似的工作。它能满足你提到的所有需求,但它其实是和Processing结合在一起的。你并不是在写纯粹的Python代码。不过,它的确让操作变得相对简单,但由于程序和解释的开销比较大,所以在实时修改视频时可能会比较慢。你提到想要编辑文件,这样的话应该是可以实现的。
3
我推荐你使用scikit-video,这是我见过的最简单的Python视频处理库。
以下是scikit-video在其项目网站上的官方介绍:
scikit-video是为了让使用Python进行视频处理变得简单而设计的。它的设计理念与其他成功的库,比如scikit-learn和scikit-image类似。scikit-video的开发者知道有一些库可以用来处理视频,比如PyFFmpeg、MoviePy、PyAV、imageIO和opencv。但是,他们发现没有一个库能提供一个全面的解决方案,来满足研究级别的视频处理工具的需求。
9
我经常需要做同样的事情,按照我所知道的,Python里没有很好的绑定解决方案。
而且,处理视频文件的帧并不像看起来那么简单。现代视频文件格式并不是把每一帧一个接一个地存储,而是使用“增量帧”,也就是说只存储每一帧与前一帧之间的变化。还有像可变帧率的视频,这让问题变得更加复杂。
以前我用过以下命令来从视频中生成图像。
ffmpeg -i /path/to/file.mpg -an -r 30 -s 320x240 tmp%06d.jpg
这里的30是目标帧率,320x240是图像的尺寸,tmp%06d.jpg是用来存储生成的jpeg图片的命名格式。然后你可以用PIL来处理每一帧,再用mencoder或ffmpeg把这些图像重新拼接成电影:
ffmpeg -r 30 -i tmp%06d.jpg output.mpg
显然,这样做会丢失音轨。