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


Posted in Python onNovember 27, 2021

前言

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

那清楚处理流程之后,怎么用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处理视频主要还是要了解它的命令用法,可以在官方文档里进行查看

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

到此这篇关于Python 如何利用ffmpeg 处理视频素材的文章就介绍到这了,更多相关Python ffmpeg 视频素材处理内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python实现分割文件及合并文件的方法
Jul 10 Python
Python数据分析之获取双色球历史信息的方法示例
Feb 03 Python
python微信跳一跳系列之棋子定位像素遍历
Feb 26 Python
Python 实现引用其他.py文件中的类和类的方法
Apr 29 Python
对Python 3.2 迭代器的next函数实例讲解
Oct 18 Python
python 对字典按照value进行排序的方法
May 09 Python
详解pandas如何去掉、过滤数据集中的某些值或者某些行?
May 15 Python
基于SpringBoot构造器注入循环依赖及解决方式
Apr 26 Python
Python自定义聚合函数merge与transform区别详解
May 26 Python
Python中zip函数如何使用
Jun 04 Python
pytorch SENet实现案例
Jun 24 Python
用Python实现童年贪吃蛇小游戏功能的实例代码
Dec 07 Python
实操Python爬取觅知网素材图片示例
Python函数中apply、map、applymap的区别
Nov 27 #Python
python字符串拼接.join()和拆分.split()详解
Nov 23 #Python
Python装饰器的练习题
Nov 23 #Python
python人工智能human learn绘图可创建机器学习模型
利用Python实现Picgo图床工具
Nov 23 #Python
python turtle绘图命令及案例
You might like
php生成二维码的几种方式整理及使用实例
2013/06/03 PHP
PHP动态生成javascript文件的2个例子
2014/04/11 PHP
php实现生成带二维码图片并强制下载功能
2018/02/24 PHP
PHP网页缓存技术优点及代码实例
2020/07/29 PHP
Javascript - HTML的request类
2006/07/15 Javascript
niceTitle 基于jquery的超链接提示插件
2010/05/31 Javascript
jquery live()重复绑定的解决方法介绍
2014/01/03 Javascript
登陆成功后自动计算秒数执行跳转
2014/01/23 Javascript
JS的get和set使用示例
2014/02/20 Javascript
深入浅析js原型链和vue构造函数
2018/10/25 Javascript
koa-router路由参数和前端路由的结合详解
2019/05/19 Javascript
python列表与元组详解实例
2013/11/01 Python
python基础教程之简单入门说明(变量和控制语言使用方法)
2014/03/25 Python
Python随机读取文件实现实例
2017/05/25 Python
Python解决线性代数问题之矩阵的初等变换方法
2018/12/12 Python
pyqt5 实现工具栏文字图片同时显示
2019/06/13 Python
使用 Python 清理收藏夹里已失效的网站
2019/12/03 Python
Python面向对象封装操作案例详解 II
2020/01/02 Python
Python计算公交发车时间的完整代码
2020/02/12 Python
python suds访问webservice服务实现
2020/06/26 Python
python两种获取剪贴板内容的方法
2020/11/06 Python
css3 图片圆形显示 如何CSS将正方形图片显示为圆形图片布局
2014/10/10 HTML / CSS
西班牙美妆电商:Perfume’s Club(有中文站)
2018/08/08 全球购物
美国汽车零部件和配件网站:CarParts
2019/03/13 全球购物
说出ArrayList,Vector, LinkedList的存储性能和特性
2015/01/04 面试题
大学生农村教师实习自我鉴定
2013/09/21 职场文书
八年级历史教学反思
2014/01/10 职场文书
写自荐信三大法宝
2014/01/24 职场文书
2014年幼儿园植树节活动方案
2014/03/02 职场文书
写求职信要注意什么问题
2014/04/12 职场文书
2014年廉洁自律承诺书
2014/05/26 职场文书
2015年保险公司个人工作总结
2015/05/22 职场文书
学生党支部工作总结2015
2015/05/26 职场文书
中学生国庆节演讲稿2015
2015/07/30 职场文书
使用Docker容器部署rocketmq单机的全过程
2022/04/03 Servers
python APScheduler执行定时任务介绍
2022/04/19 Python