Python 如何利用ffmpeg 处理视频素材

作者:一行玩python 时间:2022-05-31 19:25:17 

前言

第一次处理视频素材可以手动用剪映来处理,然后再用代码进行自动化处理,不然连朝哪个方向自动化处理可能都不知道

那清楚处理流程之后,怎么用Python来处理视频素材呢?

ffmpeg!

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 h264 -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()

四、最后

通过ffmpeg处理视频主要还是要了解它的命令用法,可以在官方文档里进行查看

然后再去了解各种热门视频的模版,自动化生成自己想要的视频指日可待 

来源:https://blog.csdn.net/qq_42554007/article/details/121504147

标签:Python,ffmpeg,视频素材处理
0
投稿

猜你喜欢

  • 解决pytorch 交叉熵损失输出为负数的问题

    2022-04-29 10:17:33
  • python类共享变量操作

    2021-10-21 02:16:32
  • Python使用dict.fromkeys()快速生成一个字典示例

    2022-05-10 08:13:23
  • 使用Python实现大学座位预约功能

    2022-03-14 16:26:53
  • ASP.NET MVC使用区域(Area)功能

    2024-06-05 09:25:04
  • python使用matplotlib库生成随机漫步图

    2021-03-01 15:11:37
  • java连接mysql数据库详细步骤解析

    2024-01-19 15:55:25
  • 如何实现一个简易版的vuex持久化工具

    2024-04-30 10:34:29
  • canvas时钟效果

    2024-05-05 09:14:22
  • win2003服务器下配置 MySQL 群集(Cluster)的方法

    2024-01-24 17:46:46
  • Python著名游戏实战之方块连接 我的世界

    2022-12-10 06:25:50
  • 教你如何用python开发一款数字推盘小游戏

    2021-11-03 23:22:14
  • python的变量和简单数字类型详解

    2021-01-10 15:34:40
  • Python命令行参数解析模块getopt使用实例

    2021-02-20 08:53:48
  • 基于Python实现虚假评论检测可视化系统

    2022-10-02 12:50:03
  • 在Pycharm中设置默认自动换行的方法

    2022-09-10 04:29:00
  • Python使用循环神经网络解决文本分类问题的方法详解

    2022-12-01 16:49:05
  • Python request post上传文件常见要点

    2022-11-05 09:27:14
  • 使用python实现画AR模型时序图

    2021-07-03 01:11:08
  • Python中的np.argmin()和np.argmax()函数用法

    2021-09-10 16:00:51
  • asp之家 网络编程 m.aspxhome.com