Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >python将视频抽帧的的多种方式

python将视频抽帧的的多种方式

原创
作者头像
JQ实验室
发布于 2022-09-29 02:02:53
发布于 2022-09-29 02:02:53
3.1K0
举报
文章被收录于专栏:实用技术实用技术

最近有一个需求是将视频抽取为一个个的帧图片,使用python很方便实现,而且有多种方式;

#### 视频转换为帧的三种方式

**第一种:使用open-cv**

OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在LinuxWindowsAndroid和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法;

由于open-cv不是python的内置库,所以使用之前需要先安装;

安装方式推荐有很多种,推荐使用pip;

>pip 是 Python 的包安装程序。其实,pip 就是 Python 标准库(The Python Standard Library)中的一个包,只是这个包比较特殊,用它可以来管理 Python 标准库(The Python Standard Library)中其他的包。pip 是一个命令行程序。 安装 pip 后,会向系统添加一个 pip 命令,该命令可以从命令提示符运行。

使用pip安装,打开命令行输入;

> pip install open-cv

等待执行安装成功;

安装完成后,导入:

>import cv2

**需要注意的是,安装的库名称和导入的名称不一样**

**1. 开始编码:**

具体思路是:

使用cv2中的VideoCapture函数加载视频,然后按帧读取,使用read方法;

```

vidcap = cv2.VideoCapture(video_path)

success, image = vidcap.read()

```

read方法返回两个参数,一个是读取结果是否成功,一个是图片帧;

读取结果为True,则保存图片帧为图片,需要使用cv2.imwrite方法,代码如下:

```

if success:

cv2.imwrite("frame_{0:0>3}.png".format(count), image)

if cv2.waitKey(10) == 27:

break

count += 1

```

累加count,方便计数;

使用open-cv保存图片完成;

**第二种:使用moviepy和PIL**

> moviepy是python中处理视频的常用库

> PIL是python中处理图片的常用库;

> 两个库都是第三方库,使用前需要安装;

使用pip安装moviepy和PIL

分别输入安装命令,打开命令行窗口,执行:

> pip install moviepy

> pip install Pillow

Pillow 是 PIL 的替代版本,PIL 软件包提供了基本的图像处理功能,如:改变图像大小,旋转图像,图像格式转换,色场空间转换,图像增强,直方图处理,插值和滤波等等

pyhon3一般使用的都是pillow;

安装完成后导入:

```

from moviepy.editor import *

from PIL import Image

```

* 使用方法:

使用moviepy中的VideoFileClip函数加载视频信息,

使用iter_frames方法获取到每一帧

使用Image函数将每一帧转换为图片

* 具体代码如下:

```python

from moviepy.editor import *

from PIL import Image

def v2pngs(videofile,out_path):

"""

将视频保存为图片

"""

video_clip = VideoFileClip(videofile)

if not os.path.exists(out_path):

os.makedirs(out_path)

for idx, frame in enumerate(video_clip.iter_frames()):

print(">>>idx: ", idx)

if idx % 5 > 0:

continue

filename = out_path+'/img_' + str(int(idx/5)).zfill(3) + ".png"

Image.fromarray(frame).save(filename)

video_clip.close()

print("Done!")

```

**使用FFmpeg抽帧**

FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序;

使用ffmpeg命令可以很快的抽取视频帧;

python在使用ffmpeg命令时,只需要调用内置库os;

> os.system('ffmpeg -***")

使用os.system执行命令行窗口命令;具体抽帧函数,可以参考ffmpeg官网命令;

---

在抽取视频帧时,有时需要获取指定分辨率的图片,那就需要先裁减原视频,ffmpeg实现此功能最方便;

**使用FFmpeg裁剪视频**

使用ffmpeg裁剪视频时的命令如下:

> ffmpeg -i video_path -vf crop=405:720:440:0 out_path

关键参数crop,输入(x,y,width,height) 左上角坐标,宽度和高度四个参数

具体代码如下:

```bash

#! _*_ coding:utf-8 _*_

import os

def cropVideo(video_path,out_path):

'''裁剪视频'''

os.system('ffmpeg -i %s -vf crop=405:720:440:0 %s' % (video_path,out_path))

print('裁剪完成...')

```

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
零代码编程:用kimichat将mp4视频批量转为mp3音频
一个文件夹里面有多个子文件夹,里面的视频需要转成为mp3音频格式。可以在kimichat中键入提示词:
AIGC部落
2024/06/24
1470
零代码编程:用kimichat将mp4视频批量转为mp3音频
python带你剪辑视频
嗯,好久没写文章了。因为最近没有熬夜了,天天背电脑也很辛苦。 工作嘛,手工为主,没有啥技术成长,也没啥好写的。 疫情期间,总听到有人叹气,总听到抖音里面“我太难了”。
赵云龙龙
2020/08/13
2.9K0
10万+的短视频被批量生产了,Python表示不服
前期有些自媒体大 V 靠搬运一些搞笑、好玩的 GIF,然后利用剪辑软件合成一段视频,再添加一个节奏感强的 BGM 后,上传各大自媒体平台后,能带来不错的阅读量和收益。
sergiojune
2019/06/19
2.5K0
10万+的短视频被批量生产了,Python表示不服
百万点赞怎么来?用Python制作抖音视频原来这么简单!
那么在上一篇教程当中,我们讲了Python在图片处理当中的应用,通过调用当中的opencv的模块,那么今天小编就和大家来分享一下Python同样也可以用来制作视频,也就是调用moviepy的模块。
用户6888863
2023/03/01
1.2K0
百万点赞怎么来?用Python制作抖音视频原来这么简单!
Python 一个快速视频剪辑编辑神器 — Moviepy
这一段代码,能够在 3 秒内将 videoplayback.mp4 的 50 秒 -60 秒的视频片段提取出来,非常方便。
崔庆才
2021/06/24
4.8K0
MoviePy:视频编辑库
MoviePy是一个用Python编写的视频编辑库,它可以处理视频剪辑、合成、处理等各种任务。它背后的魔法来自于两个强大的工具:FFmpeg,一个处理多媒体数据的开源库;以及NumPy,一个强大的科学计算库。MoviePy让你可以用几行代码完成从视频剪辑到色彩调整的所有工作。
luckpunk
2025/01/18
2850
我用字符画出了一个谷爱凌!
之前经常在网上看到那种由一个个字符构成的视频,非常炫酷。一直不懂是怎么做的,这两天研究了一下,发现并不难。
godweiyang
2022/02/23
3820
我用字符画出了一个谷爱凌!
Python 通过moviepy模块实现视频的声音抽离
MoviePy是一个用于视频编辑的Python模块,它可被用于一些基本操作(如剪切、拼接、插入标题)、视频合成(即非线性编辑)、视频处理和创建高级特效。它可对大多数常见视频格式进行读写,包括GIF。
用户10733576
2024/03/15
3210
手把手实现火爆全网的视频特效 “蚂蚁呀嘿”,太魔性了
让一张照片动起来,人脸跟着音乐一起挤眉弄眼,需要一个叫做一阶运动模型 (First Order Motion Model)来搞定。
AI算法与图像处理
2021/03/14
9500
利用Python做一个漂亮小姐姐词云跳舞视频
同时利用 python 爬取 B 站视频弹幕,并利用 opencv 对视频进行分割,百度 AI 进行人像分割,moviepy 生成词云跳舞视频,并添加音频。
Python研究者
2021/12/13
6340
利用Python做一个漂亮小姐姐词云跳舞视频
Python玩转各种多媒体,视频、音频到图片
我们经常会遇到一些对于多媒体文件修改的操作,像是对视频文件的操作:视频剪辑、字幕编辑、分离音频、视频音频混流等。又比如对音频文件的操作:音频剪辑,音频格式转换。再比如我们最常用的图片文件,格式转换、各个属性的编辑等。因为多媒体文件的操作众多,本文选取一些极具代表性的操作,以代码的形式实现各个操作。
ZackSock
2020/05/18
2.4K0
Python玩转各种多媒体,视频、音频到图片
用Python轻松搞定视频转gif动图
不知道大家是不是有过类似的经历,在看视频的时候觉得某段非常有意思想弄成动图,但是无从下手!或可以在网上找一些在线工具但是多多少少需要付费或者带有水印之类的,那么!?
可以叫我才哥
2022/04/12
1.1K0
用Python轻松搞定视频转gif动图
视频编辑的瑞士军刀,MoviePy库的详解与应用示例
在数字媒体的时代,视频内容的创作和编辑变得越来越重要。无论是社交媒体上的短视频,还是专业的电影制作,都需要强大的工具来处理和优化视频素材。Python作为一门强大的生态语言,在全世界使用的人数都是非常多的,如果要系统性的学习 Python 这门语言,可以查看我的专栏——《Python教程》
一点sir
2024/04/05
2950
视频编辑的瑞士军刀,MoviePy库的详解与应用示例
Python实现高级电影特效
前几天写了个实现特效的博客,感觉有点差强人意,只是简简单单的换背景应用场景不是非常多,今天就来实现一个更加复杂的特效“影分身”。下面有请我们本场的主演,坤制作人为我们表演他拿手的鸡你太美。
ZackSock
2020/05/18
1.4K0
Python实现高级电影特效
【目标检测】视频输出体积太大?分析视频的编码与码率问题
早期电视台在传输节目信息时,由于带宽有限,于是想在带宽不变的情况下,增加图像的分辨率,让画面看起来更清晰,于是就采用隔行扫描的方式,如下图所示[1],第一帧扫描奇数行的数据,第二帧扫描偶数行的数据,交替进行。由于视觉暂留,在人眼看来就是完整的视频图像。
zstar
2023/12/19
8470
【目标检测】视频输出体积太大?分析视频的编码与码率问题
python将照片集变成视频
一个安静的下午,看着电脑里乱七八糟的照片,有大有小,宽高不一,突然想找个方式把他们统一起来,然后做成视频更好(其实我在上高中的时候就喜欢把照片做成视频,觉得意义很大)。要满足批量、自动化,肯定得动用代码了。于是首先我列举了下我希望的功能:
shigen
2024/10/13
1150
python将照片集变成视频
装逼篇 | 抖音超火的九宫格视频是如何生成的,Python 告诉你答案
除了传统的剪辑软件可以实现,是否有其他更加快捷方便的方式?比如:一键生成,批量生成?
吴延宝
2020/09/22
7010
装逼篇 | 抖音超火的九宫格视频是如何生成的,Python 告诉你答案
使用Python进行网站数据爬取和视频处理
在互联网时代,我们经常需要从网站上获取数据并进行分析或处理。有时候,我们还需要对视频数据进行一些操作,比如剪辑、转码、合成等。Python是一门非常适合做数据分析和视频处理的编程语言,它有很多强大的库和工具可以帮助我们完成这些任务。本文将介绍如何使用Python的requests模块爬取网站数据并进行视频处理的方法和步骤。
jackcode
2023/08/10
5860
使用Python进行网站数据爬取和视频处理
Python视频剪辑工具moviePy
关注了很多的公众号,大佬们的骚操作层出不穷,看的我跃跃欲试。也想整一下。跟在大佬们的后面好看风景(复现操作)。
云深无际
2021/04/14
2.1K0
Python视频剪辑工具moviePy
Python视频编辑库:MoviePy
MoviePy是一个关于视频编辑的python库,主要包括:剪辑,嵌入拼接,标题插入,视频合成(又名非线性编辑),视频处理,和自定制效果。可以看gallery中的一些实例来了解用法。MoviePy可以读写所有的音频和视频格式,包括GIF,通过python2.7+和python3可以跨平台运行于window/Mac/Linux,下面是一个在IPython notebook的运行实例。 demo_preview.jpeg 实例
py3study
2020/01/02
2.2K0
推荐阅读
相关推荐
零代码编程:用kimichat将mp4视频批量转为mp3音频
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档