Python imageio读取视频并进行编解码详解


Posted in Python onDecember 10, 2019

读视频和写视频一直由于编解码的问题给程序员造成很多麻烦。对此进行了一些探索。用Python读取视频有两种主要方法,分别是基于imageio库和OpenCV,其中OpenCV加上ffmpeg的安装编译很麻烦,推荐大家使用第一种方法,不过大家也可依据自己的需求进行使用。

方法一:使用imageio库

1. 一般imageio库Anconda自带的有,不用我们单独安装,没有安装的可用pip安装或自己下载。

imageio使用方法可参考:http://imageio.readthedocs.io/en/latest/examples.html。

下面是一段使用imageio对视频进行灰度处理的测试代码。

# 将彩色视频转为灰度视频
import imageio
 
reader = imageio.get_reader('imageio:cockatoo.mp4')
fps = reader.get_meta_data()['fps']
 
writer = imageio.get_writer('~/cockatoo_gray.mp4', fps=fps)
 
for im in reader:
 writer.append_data(im[:, :, 1])
writer.close()

2.一般你没有按照ffmpeg,直接运行会提示如下所示的要安装ffmpeg,使用conda安装即可。另一个编解码器包含比较全的编译包是https://www.johnvansickle.com/ffmpeg/

imageio.core.fetching.NeedDownloadError: Need ffmpeg exe. You can obtain it with either:
 - install using conda: conda install ffmpeg -c conda-forge
 - download by calling: imageio.plugins.ffmpeg.download()

所以按照提示运行如下命令安装conda-forge编译好的ffmpeg即可,conda-forge编译的ffmpeg视频编解码库都很齐全,可以直接对视频读存取。

conda install ffmpeg -c conda-forge

PS:小技巧,如果conda安装国外软件包速度很慢的话,可以给conda添加清华大学的镜像源,依次运行下面几条命令就可以了,安装速度一般几M/s.具体可参考https://mirrors.tuna.tsinghua.edu.cn/help/anaconda/

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
conda config --set show_channel_urls yes

方法二:使用OpenCV和ffmpeg

安装较复杂,需编译很多库,自己查找参考相关方法。

下面是使用OpenCV读取视频的方法:

import cv2 
 
cap = cv2.VideoCapture('/path/to/your/video.mp4') 
 
while(cap.isOpened()): 
 ret, frame = cap.read() 
 cv2.imshow('image', frame) 
 k = cv2.waitKey(20) 
 #q键退出
 if (k & 0xff == ord('q')): 
  break 
 
cap.release() 
cv2.destroyAllWindows()

以上这篇Python imageio读取视频并进行编解码详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python3基础之基本数据类型概述
Aug 13 Python
Python多进程机制实例详解
Jul 02 Python
深入讲解Java编程中类的生命周期
Feb 05 Python
python 根据正则表达式提取指定的内容实例详解
Dec 04 Python
Django使用httpresponse返回用户头像实例代码
Jan 26 Python
python 时间信息“2018-02-04 18:23:35“ 解析成字典形式的结果代码详解
Apr 19 Python
python用plt画图时,cmp设置方法
Dec 13 Python
python3转换code128条形码的方法
Apr 17 Python
Python 把序列转换为元组的函数tuple方法
Jun 27 Python
Pytorch抽取网络层的Feature Map(Vgg)实例
Aug 20 Python
python实现的生成word文档功能示例
Aug 23 Python
python @propert装饰器使用方法原理解析
Dec 25 Python
Python中Subprocess的不同函数解析
Dec 10 #Python
使用python-opencv读取视频,计算视频总帧数及FPS的实现
Dec 10 #Python
python 视频逐帧保存为图片的完整实例
Dec 10 #Python
python 实现视频 图像帧提取
Dec 10 #Python
python-视频分帧&多帧合成视频实例
Dec 10 #Python
python实现视频读取和转化图片
Dec 10 #Python
sklearn-SVC实现与类参数详解
Dec 10 #Python
You might like
php生成缩略图的类代码
2008/10/02 PHP
php获取当前网址url并替换参数或网址的方法
2010/06/06 PHP
CI框架源码阅读,系统常量文件constants.php的配置
2013/02/28 PHP
PHP 获取文件权限函数介绍
2013/07/11 PHP
MacOS 安装 PHP的图片裁剪扩展Tclip
2015/03/25 PHP
Javascript 中的类和闭包
2010/01/08 Javascript
jQuery获得指定元素坐标的方法
2015/04/14 Javascript
简介JavaScript中search()方法的使用
2015/06/06 Javascript
详解vue-Resource(与后端数据交互)
2017/01/16 Javascript
基于bootstrap实现收缩导航条
2017/03/17 Javascript
react native仿微信PopupWindow效果的实例代码
2017/08/07 Javascript
vue中接口域名配置为全局变量的实现方法
2018/09/20 Javascript
js实现无限瀑布流实例方法
2019/09/16 Javascript
javascript实现贪吃蛇小游戏
2020/07/28 Javascript
javascript读取本地文件和目录方法详解
2020/08/06 Javascript
[01:18:31]DOTA2-DPC中国联赛定级赛 LBZS vs Magma BO3第一场 1月10日
2021/03/11 DOTA
python实现RSA加密(解密)算法
2016/02/17 Python
python模拟Django框架实例
2016/05/17 Python
Python 实现异步调用函数的示例讲解
2018/10/14 Python
python自动结束mysql慢查询会话的实例代码
2019/10/27 Python
Python request使用方法及问题总结
2020/04/26 Python
Python如何执行精确的浮点数运算
2020/07/31 Python
记录一下scrapy中settings的一些配置小结
2020/09/28 Python
CSS3 box-sizing属性详解
2016/11/15 HTML / CSS
Shopty西班牙:缝纫机在线销售
2018/01/26 全球购物
俄罗斯花园种植材料批发和零售网上商店:Беккер
2019/07/22 全球购物
美国传奇滑手Paul Rodriguez创办的街头滑板品牌:Primitive Skateboarding
2019/10/29 全球购物
冰淇淋开店创业计划书
2014/02/01 职场文书
保护水资源的标语
2014/06/17 职场文书
制冷与空调专业毕业生推荐信
2014/07/07 职场文书
公司合作意向书范文
2014/07/30 职场文书
综合素质自我评价怎么写
2014/09/14 职场文书
群众路线领导干部个人对照检查材料(集锦)
2014/09/23 职场文书
投标邀请书范本
2015/02/02 职场文书
Python实现智慧校园自动评教全新版
2021/06/18 Python
TypeScript 使用 Tuple Union 声明函数重载
2022/04/07 Javascript