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 相关文章推荐
Django中实现点击图片链接强制直接下载的方法
May 14 Python
Python实现文件信息进行合并实例代码
Jan 17 Python
python3 字符串/列表/元组(str/list/tuple)相互转换方法及join()函数的使用
Apr 03 Python
Ubuntu18.04下python版本完美切换的解决方法
Jun 14 Python
python地震数据可视化详解
Jun 18 Python
python批量修改图片尺寸,并保存指定路径的实现方法
Jul 04 Python
python自动化工具之pywinauto实例详解
Aug 26 Python
python编写猜数字小游戏
Oct 06 Python
tensorflow实现训练变量checkpoint的保存与读取
Feb 10 Python
利用Python将图片中扭曲矩形的复原
Sep 07 Python
属性与 @property 方法让你的python更高效
Sep 21 Python
python 自动识别并连接串口的实现
Jan 19 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 地址栏信息的获取代码
2009/01/07 PHP
php变量作用域的深入解析
2013/06/03 PHP
js的event详解。
2006/09/06 Javascript
网上应用的一个不错common.js脚本
2007/08/08 Javascript
javascript 日期常用的方法
2009/11/11 Javascript
url 编码 js url传参中文乱码解决方案
2010/04/11 Javascript
nodejs教程 安装express及配置app.js文件的详细步骤
2013/05/11 NodeJs
删除javascript中注释语句的正则表达式
2014/06/11 Javascript
js判断手机和pc端选择不同执行事件的方法
2015/01/30 Javascript
移动手机APP手指滑动切换图片特效附源码下载
2015/11/30 Javascript
谷歌showModalDialog()方法不兼容出现对话窗口的解决办法
2016/02/15 Javascript
jQuery模拟完美实现经典FLASH导航动画效果【附demo源码下载】
2016/11/09 Javascript
javascript定时器取消定时器及优化方法
2017/07/08 Javascript
JavaScript面试出现频繁的一些易错点整理
2018/03/29 Javascript
angularjs 动态从后台获取下拉框的值方法
2018/08/13 Javascript
JavaScript变速动画函数封装添加任意多个属性
2019/04/03 Javascript
教你30秒发布一个TypeScript包到NPM的方法步骤
2019/07/22 Javascript
小程序如何自主实现拦截器的示例代码
2019/11/04 Javascript
浅谈vue中组件绑定事件时是否加.native
2019/11/09 Javascript
[05:10]2014DOTA2国际邀请赛 通往胜利之匙赛场探秘之旅
2014/07/18 DOTA
浅析python实现scrapy定时执行爬虫
2018/03/04 Python
在Python中使用gRPC的方法示例
2018/08/08 Python
python视频按帧截取图片工具
2019/07/23 Python
使用 Supervisor 监控 Python3 进程方式
2019/12/05 Python
CSS3实现可关闭的下拉手风琴菜单效果
2015/08/31 HTML / CSS
正宗的澳大利亚Ugg靴子零售商:UGG Express
2020/04/19 全球购物
户籍证明格式
2014/09/15 职场文书
2014年后勤管理工作总结
2014/12/01 职场文书
银行招聘自荐信
2015/03/06 职场文书
保研推荐信范文
2015/03/25 职场文书
学术会议通知
2015/04/15 职场文书
2015年成本会计工作总结
2015/10/14 职场文书
小学英语教学经验交流材料
2015/11/02 职场文书
python控制台打印log输出重复的解决方法
2021/05/14 Python
JavaScript的function函数详细介绍
2021/11/20 Javascript
MySQL sql模式设置引起的问题
2022/05/15 MySQL