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列表(list)、字典(dict)、字符串(string)基本操作小结
Nov 28 Python
Python统计日志中每个IP出现次数的方法
Jul 06 Python
windows下ipython的安装与使用详解
Oct 20 Python
简单实现Python爬取网络图片
Apr 01 Python
Python实现处理逆波兰表达式示例
Jul 30 Python
Python安装pycurl失败的解决方法
Oct 15 Python
python3.6根据m3u8下载mp4视频
Jun 17 Python
scikit-learn线性回归,多元回归,多项式回归的实现
Aug 29 Python
python多线程扫描端口(线程池)
Sep 04 Python
python sqlite的Row对象操作示例
Sep 11 Python
python默认参数调用方法解析
Feb 09 Python
python自定义函数def的应用详解
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上传文件并显示上传进度的方法
2015/03/24 PHP
Yii2 queue的队列使用详解
2019/07/19 PHP
关于laravel模板中生成URL的几种模式总结
2019/10/18 PHP
jquery 缓存问题的几个解决方法
2013/11/11 Javascript
浅析webapp框架AngularUI的demo
2014/12/21 Javascript
jQuery中slideUp()方法用法分析
2014/12/24 Javascript
JavaScript删除数组元素的方法
2015/03/20 Javascript
jQuery背景插件backstretch使用指南
2015/04/21 Javascript
实例讲解JavaScript的Backbone.js框架中的View视图
2016/05/05 Javascript
给easyui的datebox控件添加清空按钮的实现方法
2016/11/09 Javascript
JS判断输入的字符串是否是数字的方法(正则表达式)
2016/11/29 Javascript
angularjs实现多张图片上传并预览功能
2017/02/24 Javascript
jQuery Tree Multiselect使用详解
2017/05/02 jQuery
jQuery导航条固定定位效果实例代码
2017/05/26 jQuery
Vue2.5 结合 Element UI 之 Table 和 Pagination 组件实现分页功能
2018/01/26 Javascript
javascript回调函数详解
2018/02/06 Javascript
vue组件横向树实现代码
2018/08/02 Javascript
Vue基本使用之对象提供的属性功能
2019/04/30 Javascript
vue实现多级菜单效果
2019/10/19 Javascript
Vue+Spring Boot简单用户登录(附Demo)
2020/11/12 Javascript
[48:24]完美世界DOTA2联赛循环赛LBZS vs Forest 第一场 10月30日
2020/10/31 DOTA
简单讲解Python中的闭包
2015/08/11 Python
Python wxPython库使用wx.ListBox创建列表框示例
2018/09/03 Python
使用python 写一个静态服务(实战)
2019/06/28 Python
python实现的登录与提交表单数据功能示例
2019/09/25 Python
解决echarts中饼图标签重叠的问题
2020/05/16 Python
详解Pandas 处理缺失值指令大全
2020/07/30 Python
基于html5绘制圆形多角图案
2016/04/21 HTML / CSS
西班牙手机之家:Phone House
2018/10/18 全球购物
德国最大的网上足球商店:11teamsports
2019/09/11 全球购物
大学生水文观测实习自我鉴定
2013/09/29 职场文书
幼儿教师国培感言
2014/02/19 职场文书
三好学生主要事迹怎么写
2015/11/03 职场文书
Python面向对象之内置函数相关知识总结
2021/06/24 Python
vue中控制mock在开发环境使用,在生产环境禁用方式
2022/04/06 Vue.js
pycharm无法安装cv2模块问题
2022/05/20 Python