文章目录
- [FFPyPlayer:给 Python 开发者用的 FFmpeg 视频播放库](#FFPyPlayer:给 Python 开发者用的 FFmpeg 视频播放库)
FFPyPlayer:给 Python 开发者用的 FFmpeg 视频播放库
处理视频数据在 Python 里一直是个麻烦事。安装 OpenCV 太重,直接调 FFmpeg 命令行又不够灵活。FFPyPlayer 把 FFmpeg 的核心功能封装成了 Python 接口,播放、写入、格式转换都能直接调用。项目基于 FFmpeg 库做了一层 Python 封装,底层能力来自 FFmpeg,接口风格贴近 Python。
项目目前 145 个 Star,不算大规模项目,但实用性很好。开发者 matham 在 kivy 社区比较活跃,这库最早就是为 kivy 框架的视频播放需求开发的。如果你在用 kivy 做界面,FFPyPlayer 几乎是唯一的选择。除了 kivy,它也可以配合其他 Python GUI 框架使用。

播放功能
用法很标准。从 ffpyplayer.player 导入 MediaPlayer,传入文件路径创建播放器。然后在循环里调用 get_frame() 逐帧读取数据,每帧返回图像和时间戳。拿到图像数据后可以渲染到任何 GUI 框架的控件上。整个过程只需要几行代码。
写入功能
MediaWriter 可以把帧数据写入视频文件。指定分辨率、帧率、编码器,然后逐帧写入。支持 rawvideo 等编码格式。适合做视频生成的渲染输出,比如把算法生成的图像序列合成为视频文件。
格式转换
SWScale 组件在不同像素格式之间做转换。比如从 rgb24 转为 yuv420p,这是视频编码前常见的预处理步骤。用法是创建 SWScale 对象,传入源格式和目标格式,然后调用 scale() 方法。转换后的数据可以通过 to_bytearray() 导出为字节数组。
安装方式
通过 pip 直接安装:pip install ffpyplayer。项目支持 Python 3 各版本,Windows 和 Linux 平台提供了预编译 wheel,不需要自己编译 FFmpeg。

两个需要留意的问题
许可证方面。源代码采用 LGPL 协议,但 PyPI 上发布的 wheel 包因为捆绑了 GPL 编译选项的 FFmpeg 二进制文件,实际使用中按 GPL 协议执行。如果需要在商业项目中使用,建议自行编译 FFmpeg 并构建 wheel。
安全方面。wheel 包绑定了 OpenSSL 用于网络摄像头流的播放。OpenSSL 出现安全更新时,wheel 包不会同步跟进。对安全性要求较高的场景,也需要自行编译。
适用人群
FFPyPlayer 适合需要在 Python 项目中处理视频的开发者。无论是做视频播放器的前端界面,还是需要把视频写入功能集成到应用中,它都能提供直接的 API。项目体积小,依赖少,专注视频处理这一件事。
如果习惯用命令行操作 FFmpeg,可能会觉得这库的 API 封装有点底层。但它提供了 Python 层面的细粒度控制,在 GUI 集成和自动化处理场景下比命令行方式更灵活。比如在桌面应用中嵌入实时视频预览,或者批量处理视频文件并获取每帧数据做分析,用 FFPyPlayer 都比调用子进程执行 FFmpeg 要方便得多。
,用 FFPyPlayer 都比调用子进程执行 FFmpeg 要方便得多。