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访问sqlserver示例
Feb 10 Python
python使用nntp读取新闻组内容的方法
May 08 Python
Python的包管理器pip更换软件源的方法详解
Jun 20 Python
快速实现基于Python的微信聊天机器人示例代码
Mar 03 Python
Python实现将Excel转换成xml的方法示例
Aug 25 Python
tensorflow 自定义损失函数示例代码
Feb 05 Python
matplotlib 生成的图像中无法显示中文字符的解决方法
Jun 10 Python
使用npy转image图像并保存的实例
Jul 01 Python
python中np是做什么的
Jul 21 Python
python中str内置函数用法总结
Dec 27 Python
深入理解python多线程编程
Apr 18 Python
django学习之ajax post传参的2种格式实例
May 14 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调用方法mssql_fetch_row、mssql_fetch_array、mssql_fetch_assoc和mssql_fetch_objcect读取数据的区别
2012/08/08 PHP
PHP如何实现Unicode和Utf-8编码相互转换
2015/07/29 PHP
PHP+Apache+Mysql环境搭建教程
2016/08/01 PHP
PHP实现的自定义图像居中裁剪函数示例【测试可用】
2017/08/11 PHP
用js实现下载远程文件并保存在本地的脚本
2008/05/06 Javascript
网页中CDATA标记的说明
2010/09/12 Javascript
为超链接加上disabled后的故事
2010/12/10 Javascript
javascript跨域的4种方法和原理详解
2014/04/08 Javascript
js闭包的用途详解
2014/11/09 Javascript
JavaScript 匿名函数和闭包介绍
2015/04/13 Javascript
vue.js学习笔记之绑定style样式和class列表
2016/10/31 Javascript
JS正则替换掉小括号及内容的方法
2016/11/29 Javascript
JS实现带动画的回到顶部效果
2017/12/28 Javascript
基于jquery的on和click的区别详解
2018/01/15 jQuery
vue项目中axios使用详解
2018/02/07 Javascript
vue2.0项目实现路由跳转的方法详解
2018/06/21 Javascript
JavaScript基础之静态方法和实例方法分析
2018/12/26 Javascript
Bootstrap简单实用的表单验证插件BootstrapValidator用法实例详解
2020/03/29 Javascript
[05:28]刀塔密之一:团结则存
2014/07/03 DOTA
Python使用pylab库实现画线功能的方法详解
2017/06/08 Python
详解 Python 读写XML文件的实例
2017/08/02 Python
tensorflow: 查看 tensor详细数值方法
2018/06/13 Python
python实现企业微信定时发送文本消息的实例代码
2020/11/25 Python
英国电子产品购物网站:Tech in the basket
2019/11/08 全球购物
购买原创艺术品:Zatista
2019/11/09 全球购物
新大陆软件面试题
2016/11/24 面试题
大学自我鉴定范文
2013/12/26 职场文书
学生党员思想汇报
2013/12/28 职场文书
市场开发与营销专业求职信范文
2014/05/01 职场文书
经营理念口号
2014/06/21 职场文书
党员教师自我剖析材料
2014/09/29 职场文书
上诉状格式
2015/05/23 职场文书
环保建议书范文
2015/09/14 职场文书
2019入党申请书范文3篇
2019/08/21 职场文书
创业计划书之美甲店
2019/09/20 职场文书
Python列表的索引与切片
2022/04/07 Python