SuperAPI AI 工具集

ffmpeg-opencv-integration

编程与开发

查看项目

更新于 10-15 23:42

技能介绍

用途:当 FFmpeg 负责视频输入输出、OpenCV 负责图像处理时使用本技能,覆盖 FFmpeg 解码后交给 OpenCV 处理、以及用 FFmpeg 编码 OpenCV 生成或处理过的帧两类流程。

主要能力:比较 cv2.VideoCapture、subprocess 管道、PyAV、ffmpegcv、VidGear、Decord 等方案;修复 RGB/BGR 颜色错误与 (height, width) 维度顺序错误;在替换视频帧时保留音频;围绕 CPU OpenCV 处理构建 GPU 辅助的视频 I/O。库选型建议:简单本地文件用 cv2.VideoCapture;需要完整 FFmpeg 格式与协议支持用 subprocess 管道;GPU 视频 I/O 用 ffmpegcv;网络/RTSP 流用 VidGear;机器学习批量加载用 Decord;需要帧级 libav 控制用 PyAV。

使用方式:先探测输入的尺寸、帧率、时长和音频流;按选型表选择 I/O 库;在边界锁定像素格式(OpenCV 管道用 bgr24,最终 H.264 输出用 yuv420p);用生成器或批处理逐帧处理,避免整段载入;显式保留或重编码音频;最后校验输出时长、帧率、分辨率、编码与音画同步。FFmpeg 到 OpenCV 的 BGR 管道命令为:ffmpeg -i input -f rawvideo -pix_fmt bgr24 -;OpenCV 到 FFmpeg 的管道命令为:ffmpeg -y -f rawvideo -vcodec rawvideo -s {width}x{height} -pix_fmt bgr24 -r {fps} -i - -c:v libx264 -preset fast -crf 23 -pix_fmt yuv420p output。

关键陷阱:OpenCV 是 BGR,而 FFmpeg/PyAV/PIL/Decord 常输出 RGB,需显式转换;NumPy 维度为 (height, width, channels),像素访问是 img[y, x];视频滤镜可能丢音频;必须关闭 VideoCapture、管道、writer 和 PyAV 容器;rawvideo 管道要求精确帧大小,widthheightchannels 必须与 -pix_fmt 匹配。

限制:完整管道模式、库示例与 Modal 配方保存在 references/opencv-pipelines-and-libraries.md 中,本技能本身为精简编排层。相关技能包括 ffmpeg-python-integration-reference、ffmpeg-pyav-integration、ffmpeg-hardware-acceleration。