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实现的金山快盘的签到程序
Jan 17 Python
Python的Tornado框架实现图片上传及图片大小修改功能
Jun 30 Python
PyTorch线性回归和逻辑回归实战示例
May 22 Python
python 实现批量xls文件转csv文件的方法
Oct 23 Python
对Python实现简单的API接口实例讲解
Dec 10 Python
Python把对应格式的csv文件转换成字典类型存储脚本的方法
Feb 12 Python
Python多线程爬取豆瓣影评API接口
Oct 22 Python
5款实用的python 工具推荐
Oct 13 Python
Python爬虫之Selenium下拉框处理的实现
Dec 04 Python
解决Pymongo insert时会自动添加_id的问题
Dec 05 Python
matplotlib交互式数据光标mpldatacursor的实现
Feb 03 Python
Python中os模块的简单使用及重命名操作
Apr 17 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
xml+php动态载入与分页
2006/10/09 PHP
关于php fread()使用技巧
2010/01/22 PHP
色色整理的PHP面试题集锦
2012/03/08 PHP
PHP命令行执行整合pathinfo模拟定时任务实例
2016/08/12 PHP
PHP 将dataurl转成图片image方法总结
2016/10/14 PHP
PHP面向对象程序设计模拟一般面向对象语言中的方法重载(overload)示例
2019/06/13 PHP
js 判断浏览器类型 去全角、半角空格 自动关闭当前窗口
2009/04/10 Javascript
jQuery第三课 修改元素属性及内容的代码
2010/03/14 Javascript
javascript cookie操作类的实现代码小结附使用方法
2010/06/02 Javascript
document.getElementById的简写方式(获取id对象的简略写法)
2010/09/10 Javascript
js实现进度条的方法
2015/02/13 Javascript
如何利用AngularJS打造一款简单Web应用
2015/12/05 Javascript
JavaScript位置与大小(1)之正确理解和运用与尺寸大小相关的DOM属性
2015/12/26 Javascript
JavaScript日期选择功能示例
2017/01/16 Javascript
JavaScript通过改变文字透明度实现的文字闪烁效果实例
2017/04/27 Javascript
vue登录路由验证的实现
2017/12/13 Javascript
详解Vue内部怎样处理props选项的多种写法
2018/11/06 Javascript
[00:35]可解锁地面特效
2018/12/20 DOTA
python实现mysql的单引号字符串过滤方法
2015/11/14 Python
python实现读取excel写入mysql的小工具详解
2017/11/20 Python
儿童学习python的一些小技巧
2018/05/27 Python
Python实现端口检测的方法
2018/07/24 Python
python复制列表时[:]和[::]之间有什么区别
2018/10/16 Python
Python爬虫爬取杭州24时温度并展示操作示例
2020/03/27 Python
详解python第三方库的安装、PyInstaller库、random库
2021/03/03 Python
如何转换一个字符串到enum值
2014/04/12 面试题
童装店创业计划书
2014/01/09 职场文书
国旗下的讲话演讲稿
2014/05/08 职场文书
关于责任的演讲稿
2014/05/20 职场文书
销售员态度差检讨书
2014/10/26 职场文书
优秀班主任事迹材料
2014/12/16 职场文书
放弃遗产继承公证书
2015/01/26 职场文书
房地产公司工程部经理岗位职责
2015/04/09 职场文书
学校元旦晚会开场白
2015/05/29 职场文书
班级班风口号大全
2015/12/25 职场文书
廉洁自律心得体会2016
2016/01/13 职场文书