温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Python怎么利用ffmpeg处理视频素材

发布时间:2021-11-26 16:25:29 来源:亿速云 阅读:347 作者:iii 栏目:开发技术

这篇文章主要介绍“Python怎么利用ffmpeg处理视频素材”,在日常操作中,相信很多人在Python怎么利用ffmpeg处理视频素材问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python怎么利用ffmpeg处理视频素材”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

    一、安装

    首先需要在ffmpeg的官网下载最新版本,不然可能会出现各种奇怪的问题

    Python怎么利用ffmpeg处理视频素材

    因为ffmpeg是个命令行工具,所以安装时需要注意将ffmpeg加入环境变量中,安装完之后,可以在终端里输入下面命令查看是否安装成功

    ffmpeg -version

    二、subprocess调用

    因为ffmpeg是命令行工具,可以通过subprocess的调用来使用

    先查看使用文档,例如拆分视频文件的命令是:

    ffmpeg -i [filename] -ss [starttime] -t [length] -c copy [newfilename]
    • i 为需要裁剪的文件

    • ss 为裁剪开始时间

    • t 为裁剪结束时间或者长度

    • c 为裁剪好的文件存放

    好了,用 Python 写一个调用:

    import subprocess as sp
    
    def cut_video(filename, outfile, start, length=90):
        cmd = "ffmpeg -i %s -ss %d -t %d -c copy %s" % (filename, start, length, outfile)
        p = sp.Popen(cmd, shell=True)
        p.wait()
        return
    • 定义了一个函数,通过参数传入 ffmpeg 需要的信息

    • 将裁剪命令写成一个字符串模板,将参数替换到其中

    • 用 subprocess 的 Popen 执行命令,其中参数 shell=True 表示将命令作为一个整体执行

    • p.wait() 很重要,因为裁剪需要一会儿,而且是另起进程执行的,所以需要等待执行完成再继续执行后面工作,不然可能找不到文件

    三、ffmpy3

    ffmpy3是ffmpeg的python包装器,以可以用这个包来进行处理视频

    需要先用pip进行安装

    pip install ffmpy3

    例如修改文件格式这种操作就可以使用ffmpy3直接输出

    import ffmpy3
    ff = ffmpy3.FFmpeg(
         inputs={'input.mp4': None},
         outputs={'output.avi': None}
         )
    ff.run()

    转码

    如果同时我们想使用不同的编解码器重新编码视频和音频,在输出文件同时必须指定额外的输出选项:

    ff = FFmpeg(
        inputs={'input.ts': None},
        outputs={'output.mp4': '-c:a mp2 -mpeg2video'}
    )
    ff.cmd
    ff.run()

    解复用

    还可以将文件的音频和视频输出成两个mp4格式的文件

    ff = FFmpeg(
        inputs={'input.ts': None},
        outputs={
             'video.mp4': ['-map', '0:0', '-c:a', 'copy', '-f', 'mp4'],
             'audio.mp4': ['-map', '0:1', '-c:a', 'copy', '-f', 'mp4']
         }
     )
    ff.cmd
    ff.run()

    复用

    复用就是将输入的mp4文件和mp3文件合成同一个视频文件

    这里使用 OrderedDict 来保留输入的顺序,以便它们与输出选项中的流的顺序相匹配:

    from collections import OrderedDict
    inputs = OrderedDict([('video.mp4', None), ('audio_1.mp3', None), ('audio_2.mp3', None)])
    outputs = {'output.ts', '-map 0 -c:v h364 -map 1 -c:a:0 ac3 -map 2 -c:a:1 mp2'}
    ff = FFmpeg(inputs=inputs, outputs=outputs)
    ff.cmd
    ff.run()

    拆分成图片

    处理视频素材内容还需要将视频拆成一张张图片,对图片进行处理,然后再合并成视频

    在输出的文件类型改成.png结尾即可

    import ffmpy3
    ff = ffmpy3.FFmpeg(
         inputs={'data.MP4': None},
         outputs={'1/%d.png': None}
         )
    ff.run()

    到此,关于“Python怎么利用ffmpeg处理视频素材”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

    向AI问一下细节

    免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

    AI