美文网首页
ffmpeg-python中文文档(一)

ffmpeg-python中文文档(一)

作者: leon12138 | 来源:发表于2022-01-12 18:57 被阅读0次

本文档基于github文档进行翻译,并且记录了一些自己踩过的坑和学习心得,希望可以帮助到大家。

原本英文文档

关于FFmpeg-python

FFmpeg是一套强大的视频、音频处理程序,也是很多视频处理软件的基础 。但是FFmpeg的命令行使用起来有一定的学习成本。而ffmpeg-python就是解决FFmpeg学习成本的问题,让开发者使用python就可以调用FFmpeg的功能,既减少了学习成本,也增加了代码的可读性。

image.png

快速开始

水平翻转视频:

import ffmpeg
stream = ffmpeg.input('input.mp4')
stream = ffmpeg.hflip(stream)
stream = ffmpeg.output(stream, 'output.mp4')
ffmpeg.run(stream)

或者,如果您更喜欢流畅的界面:

import ffmpeg
(
    ffmpeg
    .input('input.mp4')
    .hflip()
    .output('output.mp4')
    .run()
)

API 参考

安装

安装ffmpeg-python

ffmpeg-python可以通过典型的 pip 安装获取最新版本(注意:是ffmpeg-python,不要写成了python-ffmpeg):

pip install ffmpeg-python

或者可以从本地克隆和安装源:

git clone git@github.com:kkroening/ffmpeg-python.git
pip install -e ./ffmpeg-python

安装FFmpeg

使用该库,需要自行安装FFmpeg,如果电脑已经安装了,可以忽略本步骤。这里推荐直接使用conda进行安装,可以省下很多麻烦,其他的安装方式自行百度。

conda install ffmpeg

自定义过滤器

没有看到您要查找的过滤器?虽然 ffmpeg-python包含一些最常用过滤器(例如 concat)的简写符号,但所有过滤器都可以通过 .filter运算符引用:

stream = ffmpeg.input('dummy.mp4')
stream = ffmpeg.filter(stream, 'fps', fps=25, round='up')
stream = ffmpeg.output(stream, 'dummy2.mp4')
ffmpeg.run(stream)

或流利地:

(
    ffmpeg
    .input('dummy.mp4')
    .filter('fps', fps=25, round='up')
    .output('dummy2.mp4')
    .run()
)

特殊选项名称:

具有特殊名称的参数,例如-qscale:v(可变比特率)、-b:v(恒定比特率)等,可以指定为关键字参数字典,如下所示:

(
    ffmpeg
    .input('in.mp4')
    .output('out.mp4', **{'qscale:v': 3})
    .run()
)

多个输入:

接受多个输入流的过滤器可以通过将输入流作为数组传递给ffmpeg.filter

main = ffmpeg.input('main.mp4')
logo = ffmpeg.input('logo.png')
(
    ffmpeg
    .filter([main, logo], 'overlay', 10, 10)
    .output('out.mp4')
    .run()
)

多个输出:

产生多个输出的过滤器可用于.filter_multi_output

split = (
    ffmpeg
    .input('in.mp4')
    .filter_multi_output('split')  # 或 `.split()`
)
(
    ffmpeg
    .concat(split[0], split[1].reverse())
    .output('out.mp4')
    .run()
)

(在这种特殊情况下,.split()是等效的简写,但一般方法适用于其他多输出过滤器)

字符串表达式:

ffmpeg 解释的表达式可以作为字符串参数包含并引用任何特殊的 ffmpeg 变量名称:

(
    ffmpeg
    .input('in.mp4')
    .filter('crop', 'in_w-2*10', 'in_h-2*20')
    .input('out.mp4')
)

如有疑问,请参阅现有过滤器示例和/或官方 ffmpeg 文档

其他资源

相关文章

网友评论

      本文标题:ffmpeg-python中文文档(一)

      本文链接:https://www.haomeiwen.com/subject/quiwcrtx.html