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的多态性实例分析
Jul 07 Python
总结用Pdb库调试Python的方式及常用的命令
Aug 18 Python
Python3.4实现远程控制电脑开关机
Feb 22 Python
Python输入二维数组方法
Apr 13 Python
Python中字符串与编码示例代码
May 20 Python
使用Python计算玩彩票赢钱概率
Jun 26 Python
python聚类算法解决方案(rest接口/mpp数据库/json数据/下载图片及数据)
Aug 28 Python
python输出带颜色字体实例方法
Sep 01 Python
Pandas 解决dataframe的一列进行向下顺移问题
Dec 27 Python
tensorflow实现在函数中用tf.Print输出中间值
Jan 21 Python
Python dict和defaultdict使用实例解析
Mar 12 Python
Python基于smtplib协议实现发送邮件
Jun 03 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时的知识积累总结
2013/06/07 PHP
php的数组与字符串的转换函数整理汇总
2013/07/18 PHP
php使用异或实现的加密解密实例
2013/09/04 PHP
PHP safe_mode开启对于PHP系统函数有什么影响
2020/11/10 PHP
javascript跨域刷新实现代码
2011/01/01 Javascript
js中的replace方法使用介绍
2013/10/28 Javascript
JavaScript获取当前日期是星期几的方法
2015/04/06 Javascript
jquery.cookie实现的客户端购物车操作实例
2015/12/24 Javascript
js接收并转化Java中的数组对象的方法
2016/08/11 Javascript
最原始的jQuery注册验证方式
2016/10/11 Javascript
使用 jQuery.ajax 上传带文件的表单遇到的问题
2016/10/31 Javascript
bootstrap按钮插件(Button)使用方法解析
2017/01/13 Javascript
详解AngularJS2 Http服务
2017/06/26 Javascript
原生js实现简单的链式操作
2017/07/04 Javascript
JS库之Three.js 简易入门教程(详解之一)
2017/09/13 Javascript
NodeJS搭建HTTP服务器的实现步骤
2018/10/12 NodeJs
JS实现简易贪吃蛇游戏
2020/08/24 Javascript
Vue绑定用户接口实现代码示例
2020/11/04 Javascript
[01:37]PWL S2开团时刻DAY1&2——这符有毒
2020/11/20 DOTA
从零学Python之入门(四)运算
2014/05/27 Python
Python函数参数类型*、**的区别
2015/04/11 Python
基于python实现学生管理系统
2018/10/17 Python
Python3.5基础之NumPy模块的使用图文与实例详解
2019/04/24 Python
python多线程高级锁condition简单用法示例
2019/11/07 Python
python支持多线程的爬虫实例
2019/12/21 Python
如何通过Python3和ssl实现加密通信功能
2020/05/09 Python
如何更换python默认编辑器的背景色
2020/08/10 Python
python编写扎金花小程序的实例代码
2021/02/23 Python
H5 meta小结(前端必看篇)
2016/08/24 HTML / CSS
无畏的旅行:Intrepid Travel
2017/12/20 全球购物
电脑教师的教学自我评价
2013/11/26 职场文书
快餐店的创业计划书范文
2014/01/29 职场文书
中文教师求职信
2014/02/22 职场文书
幼儿园教研活动总结
2014/04/30 职场文书
详细的本科生职业生涯规划范文
2014/09/16 职场文书
详解Python+OpenCV绘制灰度直方图
2022/03/22 Python