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 xlwt设置excel单元格字体及格式
Apr 18 Python
对Python中的@classmethod用法详解
Apr 21 Python
Python判断字符串是否为字母或者数字(浮点数)的多种方法
Aug 03 Python
pycharm恢复默认设置或者是替换pycharm的解释器实例
Oct 29 Python
Django实现跨域请求过程详解
Jul 25 Python
通过实例了解python property属性
Nov 01 Python
妙用itchat! python实现久坐提醒功能
Nov 25 Python
opencv 图像礼帽和图像黑帽的实现
Jul 07 Python
解决python3.x安装numpy成功但import出错的问题
Nov 17 Python
Python 找出英文单词列表(list)中最长单词链
Dec 14 Python
python 基于DDT实现数据驱动测试
Feb 18 Python
Django基础CBV装饰器和中间件
Mar 22 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 checkbox 取值详细说明
2010/08/19 PHP
解析php中两种缩放图片的函数,为图片添加水印
2013/06/14 PHP
PHP+memcache实现消息队列案例分享
2014/05/21 PHP
PHP处理JSON字符串key缺少双引号的解决方法
2014/09/16 PHP
php数据库操作model类(使用__call方法)
2016/11/16 PHP
PHP编程 SSO详细介绍及简单实例
2017/01/13 PHP
cookie丢失问题(认证失效) Authentication (用户验证信息)也会丢失
2009/06/04 Javascript
屏蔽script注入小例子
2013/11/12 Javascript
Jqgrid表格随窗口大小改变而改变的简单实例
2013/12/28 Javascript
JS实现表格数据各种搜索功能的方法
2015/03/03 Javascript
JavaScript实现网页加载进度条代码超简单
2015/09/21 Javascript
JavaScript中rem布局在react中的应用
2015/12/09 Javascript
JavaScript 正则表达式中global模式的特性
2016/02/25 Javascript
javascript十六进制数字和ASCII字符之间的转换方法
2016/12/27 Javascript
JavaScript实现图片瀑布流和底部刷新
2017/01/02 Javascript
Canvas + JavaScript 制作图片粒子效果
2017/02/08 Javascript
js如何获取网页所有图片
2017/05/12 Javascript
基于js中的存储键值对以及注意事项介绍
2018/03/30 Javascript
微信小程序日历/日期选择插件使用方法详解
2018/12/28 Javascript
atom-design(Vue.js移动端组件库)手势组件使用教程
2019/05/16 Javascript
python采集百度百科的方法
2015/06/05 Python
详解Python的Django框架中的模版继承
2015/07/16 Python
Python3爬虫之urllib携带cookie爬取网页的方法
2018/12/28 Python
Django项目使用ckeditor详解(不使用admin)
2019/12/17 Python
Django 设置多环境配置文件载入问题
2020/02/25 Python
浅谈python元素如何去重,去重后如何保持原来元素的顺序不变
2020/02/28 Python
python爬取代理IP并进行有效的IP测试实现
2020/10/09 Python
三星美国官网:Samsung美国
2017/02/06 全球购物
红领巾心向党演讲稿
2014/09/10 职场文书
缓刑人员思想汇报
2014/10/11 职场文书
汽车转让协议书
2015/01/29 职场文书
民主评议教师党员自我评价
2015/03/04 职场文书
担保公司2015年终工作总结
2015/10/14 职场文书
2016年国陪研修感言
2015/11/18 职场文书
WordPress多语言翻译插件 - WPML使用教程
2021/04/01 PHP
php去除数组中为0的元素的实例分析
2021/11/17 PHP