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 相关文章推荐
python实现2014火车票查询代码分享
Jan 10 Python
Python中optparse模块使用浅析
Jan 01 Python
RC4文件加密的python实现方法
Jun 30 Python
在Django的视图中使用数据库查询的方法
Jul 16 Python
浅谈python中的getattr函数 hasattr函数
Jun 14 Python
Apache如何部署django项目
May 21 Python
对Python中9种生成新对象的方法总结
May 23 Python
Django实现一对多表模型的跨表查询方法
Dec 18 Python
在pyqt5中QLineEdit里面的内容回车发送的实例
Jun 21 Python
Python实现串口通信(pyserial)过程解析
Sep 25 Python
conda安装tensorflow和conda常用命令小结
Feb 20 Python
Python实现打乒乓小游戏
Sep 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
table标签的结构与合并单元格的实现方法
2013/07/24 PHP
ThinkPHP实现支付宝接口功能实例
2014/12/02 PHP
php+mysql数据库实现无限分类的方法
2014/12/12 PHP
PHP pthreads v3下的Volatile简介与使用方法示例
2020/02/21 PHP
完美解决JS中汉字显示乱码问题(已解决)
2006/12/27 Javascript
浅谈JavaScript function函数种类
2014/12/29 Javascript
jQuery插件Skippr实现焦点图幻灯片特效
2015/04/12 Javascript
png在IE6 下无法透明的解决方法汇总
2015/05/21 Javascript
Perl Substr()函数及函数的应用
2015/12/16 Javascript
使用Javascript实现选择下拉菜单互移并排序
2016/02/23 Javascript
基于JavaScript实现简单的音频播放功能
2018/01/07 Javascript
node.js自动上传ftp的脚本分享
2018/06/16 Javascript
解决vue项目打包后提示图片文件路径错误的问题
2018/07/04 Javascript
使用vue3重构拼图游戏的实现示例
2021/01/25 Vue.js
[02:34]DOTA2亚洲邀请赛 BG战队出场宣传片
2015/03/09 DOTA
归纳整理Python中的控制流语句的知识点
2015/04/14 Python
python正则中最短匹配实现代码
2018/01/16 Python
numpy中实现二维数组按照某列、某行排序的方法
2018/04/04 Python
python实现简单的文字识别
2018/11/27 Python
Python上下文管理器类和上下文管理器装饰器contextmanager用法实例分析
2019/11/07 Python
Tensorflow Summary用法学习笔记
2020/01/10 Python
Python dict的常用方法示例代码
2020/06/23 Python
python的setattr函数实例用法
2020/12/16 Python
伦敦一家西班牙童装精品店:La Coqueta
2018/02/02 全球购物
新闻专业个人自我评价
2013/09/21 职场文书
机修工岗位职责
2013/11/24 职场文书
护士感人事迹
2014/05/01 职场文书
组织鉴定材料
2014/06/02 职场文书
环卫处个人工作总结
2015/03/04 职场文书
2015年路政工作总结
2015/05/22 职场文书
2015年见习期个人工作总结
2015/05/28 职场文书
入党积极分子群众意见
2015/06/01 职场文书
辩论赛新闻稿
2015/07/17 职场文书
应收账款管理制度
2015/08/06 职场文书
2015年大学组织委员个人工作总结
2015/10/23 职场文书
如何使用pdb进行Python调试
2021/06/30 Python