基于ffmpeg的播放器的cython实现。
ffpyplayer的Python项目详细描述
ffpyplayer是ffmpeg库的一个python绑定,用于播放和编写 媒体文件。
有关详细信息:http://matham.github.io/ffpyplayer/index.html
安装:http://matham.github.io/ffpyplayer/installation.html
警告
尽管ffpyplayer源代码是在lgpl下授权的,但是ffpyplayer控制盘 对于pypi上的windows和linux,是在gpl下分发的,因为包含的ffmpeg二进制文件 是用gpl选项编译的。
如果你想在lgpl下使用它,你需要用正确的选项自己编译ffmpeg。
类似地,wheels将openssl捆绑在一起,用于在线摄像机支持。但是,没有发布 对于每一个openssl版本,建议您自己编译ffpyplayer 是个问题。
用法示例
播放文件:
>>>fromffpyplayer.playerimportMediaPlayer>>>importtime>>>player=MediaPlayer(filename)>>>val=''>>>whileval!='eof':...frame,val=player.get_frame()...ifval!='eof'andframeisnotNone:...img,t=frame...# display img
编写视频文件:
>>>fromffpyplayer.writerimportMediaWriter>>>fromffpyplayer.picimportImage>>>w,h=640,480>>># write at 5 fps.>>>out_opts={'pix_fmt_in':'rgb24','width_in':w,'height_in':h,...'codec':'rawvideo','frame_rate':(5,1)}>>>writer=MediaWriter('output.avi',[out_opts])>>># Construct image>>>size=w*h*3>>>buf=bytearray([int(x*255/size)forxinrange(size)])>>>img=Image(plane_buffers=[buf],pix_fmt='rgb24',size=(w,h))>>>foriinrange(20):...writer.write_frame(img=img,pts=i/5.,stream=0)
转换图像:
>>>fromffpyplayer.picimportImage,SWScale>>>w,h=500,100>>>size=w*h*3>>>buf=bytearray([int(x*255/size)forxinrange(size)])>>>img=Image(plane_buffers=[buf],pix_fmt='rgb24',size=(w,h))>>>sws=SWScale(w,h,img.get_pixel_format(),ofmt='yuv420p')>>>img2=sws.scale(img)>>>img2.get_pixel_format()'yuv420p'>>>planes=img2.to_bytearray()>>>map(len,planes)[50000,12500,12500,0]