ffmpeg-python 入门5 行代码做出淡入淡出【免费下载链接】ffmpeg-pythonPython bindings for FFmpeg - with complex filtering support项目地址: https://gitcode.com/gh_mirrors/ff/ffmpeg-python这是一份针对 ffmpeg-python 的上手引导它是支持复杂滤镜图的 FFmpeg Python 封装库。用几行 Python 代码就能把裁剪、拼接、叠加、淡入淡出这类视频处理流程表达出来不用去背-filter_complex的命令行写法。本文假设你会一点 Python没接触过 FFmpeg 也没关系目标是跟着读完就能做出一个最小的视频转场过渡效果。ffmpeg-python 是什么适合谁ffmpeg-python 做的事情很直白你在 Python 里用代码描述处理流程它负责把流程翻译成 FFmpeg 对应的命令行参数再调用 ffmpeg 执行。说白了就是让 Python 调用 FFmpeg 滤镜这件事回到代码层面。它比较适合两类人见过 FFmpeg 命令行参数、想把视频处理写进脚本的开发者需要批量出片、把转场参数化、不想每次都手敲命令的内容创作者。ffmpeg-python 安装与环境准备安装 Python 库两种方式各一行命令任选其一# 方式一直接用 pip pip install ffmpeg-python # 方式二克隆源码安装 git clone https://gitcode.com/gh_mirrors/ff/ffmpeg-python pip install -e ./ffmpeg-python安装 FFmpeg 本体要留意一点ffmpeg-python 是纯 Python 封装它自己不会下载 FFmpeg真正干活的 ffmpeg 可执行文件得装在你系统里。Debian/Ubuntu 用sudo apt install ffmpegmacOS 用 Homebrew 装。装完后在终端敲ffmpeg -version能打印出版本信息就说明环境没问题如果提示 command not found先解决这一步再继续。心智模型把 filtergraph 想象成信号走线图写代码前先讲清一个概念filtergraph滤镜图。把它想象成一张视频信号的走线图就好输入流ffmpeg.input()读进来的文件是信号的起点滤镜节点每个方法调用对应图上的一个节点trim、hflip、fade 各自只做一件事输出流ffmpeg.output()是终点声明结果写到哪个文件。库会把这些节点拼成一张有向无环图运行时生成对应的命令行参数。你不需要自己管[v0][v1]这类流标签复杂 filtergraph 因此变得可读。下面这张图是最基本的 ffmpeg-python filtergraph 形态一条 filtergraph 做出淡入淡出最经典的过渡就是淡入淡出。库里没有单独的 fade 快捷方法但通用filter()API 可以原样调用任何 FFmpeg 滤镜import ffmpeg stream ffmpeg.input(in.mp4) stream stream.video.filter(fade, tin, st0, d1) stream stream.video.filter(fade, tout, st9, d1) stream ffmpeg.output(stream, out.mp4) ffmpeg.run(stream)这段代码做了三件事读入视频开头淡入 1 秒从第 9 秒起淡出 1 秒假设素材长 10 秒再写出结果。参数上t区分 in/outst是起始时间d是持续时间。跑通它后面所有转场都是在这套语法上换参数。常见转场配方从滑动到混合滤镜名加参数的模式理解之后其他过渡效果就只是换配方。下面四个是最常用的效果滤镜关键参数实现思路滑动overlayxt*80第二段视频叠在主画面上位置随时间移动缩放zoompanz缩放、d帧数画面逐帧放大适合开场镜头旋转rotateangle对画面施加角度可用时间表达式做动画混合xfadetransition、offset、duration官方转场滤镜两段素材直接混合过渡下图是 overlay 叠加滤镜与 drawbox 滤镜作用到视频上的实际效果可以直观感受滤镜节点做了什么如果转场时还想处理声音用.audio()选出音频流和视频流各走各的线最后一起写进输出文件即可。常见坑与性能建议ffmpeg: command not found最常见。ffmpeg-python 不带 FFmpeg先装好本体。No such filter: xxx滤镜名拼错。filter()会把名字原样传给 FFmpeg多一个字母都会报错查官方滤镜文档里的准确写法。流数量或类型不匹配concat这类滤镜要求输入是同类型的流把视频流和音频流混着传会直接报错用.video/.audio显式选择后再传。性能上有一条实用建议长视频先切一小段验证效果再跑全片批量出片时给输出环节加硬件加速参数能明显缩短渲染时间。延伸方向自定义滤镜与 AI 流水线库里没有的滤镜用filter()原样调用即可参数直接透传给 FFmpeg比如stream.filter(rotate, anglePI/8)参数写法与命令行完全一致。与 numpy 联动examples/ffmpeg-numpy.ipynb 演示把视频帧读成 numpy 数组、处理完再写回去方便做逐帧计算。与 AI 框架联动examples/tensorflow_stream.py 把视频逐帧送进 TensorFlow 模型下图就是这条流水线的 filtergraph。交互式调试在 Jupyter 里边写代码边预览滤镜效果调参数比反复渲染整片舒服得多。下一步把in.mp4换成你自己的素材先跑通上面的淡入淡出再试着给两段素材之间加一个xfade混合过渡。仓库的 examples 目录里还有更多成品案例遇到想模仿的效果可以直接翻。【免费下载链接】ffmpeg-pythonPython bindings for FFmpeg - with complex filtering support项目地址: https://gitcode.com/gh_mirrors/ff/ffmpeg-python创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
阅读完成 · 觉得有帮助?