Python 如何利用ffmpeg 处理视频素材
作者:一行玩python 发布时间:2022-05-31 19:25:17
前言
第一次处理视频素材可以手动用剪映来处理,然后再用代码进行自动化处理,不然连朝哪个方向自动化处理可能都不知道
那清楚处理流程之后,怎么用Python来处理视频素材呢?
ffmpeg!
ffmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序
使用这个神器,便可以处理各种视频素材内容,极度舒适
下面一行来分享一下如何使用这个神器
一、安装
首先需要在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处理视频主要还是要了解它的命令用法,可以在官方文档里进行查看
然后再去了解各种热门视频的模版,自动化生成自己想要的视频指日可待
来源:https://blog.csdn.net/qq_42554007/article/details/121504147


猜你喜欢
- 本文为大家分享了pygame游戏之旅的第9篇,供大家参考,具体内容如下在游戏开始之前定义一个函数,用来显示游戏介绍:def game_int
- 神经网络只是由两个或多个线性网络层叠加,并不能学到新的东西,简单地堆叠网络层,不经过非线性激活函数激活,学到的仍然是线性关系。但是加入激活函
- 根据google最新的算法规则:用户行为模式的重视程度越来越高,这也就要求网页设计的时候应注意“合理的网页结构”,SEO业界也有个共识“网页
- 在实际应用中对于数据进行分析的时候,经常能看见缺失值,下面来介绍一下如何利用pandas来处理缺失值。常见的缺失值处理方式有,过滤、填充。一
- UnicodeDecodeError: 'utf-8' codec can't decod有一次报错如下:Unico
- 能够操控日期和时间对于大多数编程语言来说是基本的能力,Perl也不例外。但是在碰到与时间相关的更加复杂的处理时,Perl自带的功能常常就显得
- 概念Python中已经有了threading模块,为什么还需要线程池呢,线程池又是什么东西呢?以爬虫为例,需要控制同时爬取的线程数,例子中创
- 1 模型定义和TF很像,Pytorch也通过继承父类来搭建模型,同样也是实现两个方法。在TF中是__init__()和
- 1. 简介kmean 是无监督学习的一种算法,主要是用来进行聚类分析的,他会在数据集中算出几个点作为簇中心,求这些数据集与这些簇中心的距离,
- 这篇文章主要介绍了Python安装whl文件过程图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友
- 视频观看视频函数的参数定义函数时,我们把参数的名字和位置确定下来,函数的接口定义就完成了。参数在函数名后的括号内指定。您可以根据需要添加任意
- 前言你是否曾经想将某张照片中的人物抠出来,然后拼接到其他图片上去,从而可以即使你在天涯海角,我也可以到此一游?专业点的人使用 PhotoSh
- 需求:查询进行中的活动数据进行中一共有以下几种情况:1.开始时间为空,结束时间为空, 此结果数据将永远为进行中的数据2.开始时间为空,结束时
- JSON(Javascript Object Notation)是一种轻量级的数据交换语言,以文字为基础,具有自我描述性且易于让人阅读。尽管
- 本文实例讲述了python处理csv数据的方法。分享给大家供大家参考。具体如下:Python代码:#coding=utf-8__author
- JWT(JSON Web Token)是一种基于JSON的安全令牌,可以用于在不同系统之间传输认证信息。在Go中实现JWT验证,可以通过标准
- 本文实例讲述了python执行get提交的方法。分享给大家供大家参考。具体如下:import sys, urllib2, urllibdef
- 安装Go1.15版本 大纲 Windows安装GoLinux安装GoMacOS安装GoDocker安装Go总结视频地址:https://ww
- Python学习第一篇。把之前学习的Python基础知识总结一下。一、认识Python首先我们得清楚这个:Python这个名字是从Monty
- 每一个网页项目都少不了导航栏,通过原始的方法基本上都是可以写出来的。但是要写出代码量少,冗余度低的代码就要动脑子思考一下了。最近写了一个百度