美文网首页
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