ffmpeg-python中文文档(一)

内容分享2周前发布
0 0 0

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

原本英文文档

关于FFmpeg-python

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

ffmpeg-python中文文档(一)

快速开始

水平翻转视频:

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 文档。

其他资源

  • API 参考

  • 案例

  • 过滤器

  • FFmpeg 主页

  • FFmpeg 文档

  • FFmpeg Filters 文档

  • 测试用例

  • Issue tracker

  • Matrix Chat: #ffmpeg-python:matrix.org

© 版权声明

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
none
暂无评论...