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
猜你喜欢
- 下面我挑选出的这几个技巧常常会被人们忽略,但它们在日常编程中能真正的给我们带来不少帮助。 1. 字典推导(Dictionary compre
- 鼠标经过超链时的提示图层源码运行代码框<script>var oPopup = window.createPopup();fun
- Mcrypt扩展库可以实现加密解密功能,就是既能将明文加密,也可以密文还原。1.PHP加密扩展库Mcrypt安装在标准的PHP安装过程中并没
- 简介:网络爬虫(又被称为网页蜘蛛),网络机器人,是一种按照一定的规则,自动地抓信息的程序或者脚本。假设互联网是一张很大的蜘蛛网,每个页面之间
- 背景:文件内容每一行是由N个单一数字组成的,每个数字之间由制表符区分,比如:0 4 3 1 2 2 1 0 3 1 2 0 ……现在需要将每
- 新浪微博需要登录才能爬取,这里使用m.weibo.cn这个移动端网站即可实现简化操作,用这个访问可以直接得到的微博id。分析新浪微博的评论获
- 最基础的形态学操作有四个,分别是腐蚀、膨胀、开计算和闭计算,`scipy.ndimage分别实现了二值数组和灰度数组的这四种运算二值灰度bi
- 前言在学习过程中发现有时候交换字典的键和值,会使得我们最后的输出结果更加直观明了,整理出以下四种交换方式(data是原字典,new_data
- 前言上次写博客还在去年的8月底了,期间有了小宝,换工作等诸多事宜让我踩坑采的起飞,时隔4个月,逐渐找回状态。这篇的主题是python的第三方
- 一个ASP文件通常包含HTML标签,有时和一个HTML文件非常类似。然而,ASP文件(除了包含HTML标签外),还可以包括服务器的脚本程序,
- 利用Python OpenCV中的 cv.Resize(源,目标,变换方法)就可以实现变换为想要的尺寸了源文件:就不用说了目标:你可以对图像
- 这篇文章主要介绍了python重要函数eval多种用法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要
- 接前两篇“运行时查看线程信息”的博客,我在想,既然我可以随时打印线程信息,那么我是不是可以随时打印进程内部的其它信息呢?比如,实时查看一些对
- 应该来说,学会了如何插入记录,如何显示记录,那么现在简单的完整的文章系统、新闻系统和留言系统不成问题。那接着下面的问题就是:随着信息内容的不
- 前面已经介绍过如何创建scrapy的项目,和对项目中的文件功能的基本介绍。这次,就来谈谈使用的基本流程:(1)首先第一点,打开终端,找到自己
- Pytorch的backward()函数假若有多个loss函数,如何进行反向传播和更新呢? x = torch.tensor(2.0, re
- 将视频中的音频分离出来简单介绍使用python将音频从视频当中分离出来,形成一个mp3格式的音乐。使用环境和模块1.python 3.72.
- 问题描述最近做一个项目,是用Python进行相关的串口操作。及将相关指令通过串口发给设备,设备根据发过来的指令来做出相应的操作,所用的库是P
- 关于Python的文件遍历,大概有两种方法,一种是较为便利的os.walk(),还有一种是利用os.listdir()递归遍历。方法一:利用
- 一、什么是RequestsRequests 是Python语编写,基于urllib,采Apache2 Licensed开源协议的 HTTP