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使用7z解压apk包的方法
Apr 18 Python
Python中处理字符串之endswith()方法的使用简介
May 18 Python
Django的信号机制详解
May 05 Python
Python requests发送post请求的一些疑点
May 20 Python
使用Selenium破解新浪微博的四宫格验证码
Oct 19 Python
python实现数据分析与建模
Jul 11 Python
Django通过dwebsocket实现websocket的例子
Nov 15 Python
Numpy与Pytorch 矩阵操作方式
Dec 27 Python
Python基于gevent实现高并发代码实例
May 15 Python
pymysql模块使用简介与示例
Nov 17 Python
只需要这一行代码就能让python计算速度提高十倍
May 24 Python
Python Pandas解析读写 CSV 文件
Apr 11 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使用memcache缓存技术提高响应速度的方法
2014/12/26 PHP
Centos下升级php5.2到php5.4全记录(编译安装)
2015/04/03 PHP
ThinkPHP5.0 图片上传生成缩略图实例代码说明
2018/06/20 PHP
PHP常见字符串操作函数与用法总结
2019/03/04 PHP
详解PHP 二维数组排序保持键名不变
2019/03/06 PHP
滚动条变色 隐藏滚动条与双击网页自动滚屏显示代码
2009/12/28 Javascript
HTML中的setCapture和releaseCapture使用介绍
2012/03/21 Javascript
js 控制图片大小核心讲解
2013/10/09 Javascript
使用iframe window的scroll方法控制iframe页面滚动
2014/03/05 Javascript
将数字转换成大写的人民币表达式的js函数
2014/09/21 Javascript
详谈jQuery中的this和$(this)
2014/11/13 Javascript
javascript判断数组内是否重复的方法
2015/04/21 Javascript
JavaScript数据操作_浅谈原始值和引用值的操作本质
2016/08/23 Javascript
原生js实现吸顶效果
2017/03/13 Javascript
前端框架学习总结之Angular、React与Vue的比较详解
2017/03/14 Javascript
浅谈vue中数据双向绑定的实现原理
2017/09/14 Javascript
详解tween.js 中文使用指南
2018/01/05 Javascript
浅谈ElementUI中switch回调函数change的参数问题
2018/08/24 Javascript
vue实现自定义日期组件功能的实例代码
2018/11/06 Javascript
vue中组件的过渡动画及实现代码
2018/11/21 Javascript
面试题:react和vue的区别分析
2019/04/08 Javascript
通过数据库向Django模型添加字段的示例
2015/07/21 Python
Python通过OpenCV的findContours获取轮廓并切割实例
2018/01/05 Python
Python3导入CSV文件的实例(跟Python2有些许的不同)
2018/06/22 Python
python使用pygame框架实现推箱子游戏
2018/11/20 Python
基于Python批量生成指定尺寸缩略图代码实例
2019/11/20 Python
django 实现简单的插入视频
2020/04/07 Python
pycharm远程连接vagrant虚拟机中mariadb数据库
2020/06/05 Python
PyCharm最新激活码PyCharm2020.2.3有效
2020/11/18 Python
全面总结使用CSS实现水平垂直居中效果的方法
2016/03/10 HTML / CSS
利用css3如何设置没有上下边的列表间隔线
2017/07/03 HTML / CSS
美国名表在线商城:Ashford(支持中文)
2019/09/24 全球购物
Noon埃及:埃及在线购物
2019/11/26 全球购物
董事长助理岗位职责
2014/02/18 职场文书
学校机关党总支领导班子整改工作方案
2014/10/26 职场文书
污染环境建议书
2015/09/14 职场文书