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中解析JSON并同时进行自定义编码处理实例
Feb 08 Python
基于python时间处理方法(详解)
Aug 14 Python
Python时间戳使用和相互转换详解
Dec 11 Python
详解Python nose单元测试框架的安装与使用
Dec 20 Python
Python即时网络爬虫项目启动说明详解
Feb 23 Python
python如何修改装饰器中参数
Mar 20 Python
如何使用VSCode愉快的写Python于调试配置步骤
Apr 06 Python
Python3.7实现中控考勤机自动连接
Aug 28 Python
使用python实现抓取腾讯视频所有电影的爬虫
Apr 15 Python
Python 导入文件过程图解
Oct 15 Python
linux中nohup和后台运行进程查看及终止
Jun 24 Python
python 实现图片特效处理
Apr 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
新版mysql+apache+php Linux安装指南
2006/10/09 PHP
安装PHP可能遇到的问题“无法载入mysql扩展” 的解决方法
2007/04/16 PHP
一些 PHP 管理系统程序中的后门
2009/08/05 PHP
php数组函数序列之array_splice() - 在数组任意位置插入元素
2011/11/07 PHP
在Ubuntu 14.04上部署 PHP 环境及 WordPress
2014/09/02 PHP
PHP实现无限极分类图文教程
2014/11/25 PHP
PHP实现求连续子数组最大和问题2种解决方法
2017/12/26 PHP
Nigma vs Liquid BO3 第一场2.14
2021/03/10 DOTA
利用404错误页面实现UrlRewrite的实现代码
2008/08/20 Javascript
无缝滚动改进版支持上下左右滚动(封装成函数)
2012/12/04 Javascript
jquery删除数据记录时的弹出提示效果
2014/05/06 Javascript
jQuery实现高亮显示的方法
2015/03/10 Javascript
kindeditor编辑器点中图片滚动条往上顶的bug
2015/07/05 Javascript
基于vue配置axios的方法步骤
2017/11/09 Javascript
Vue 实现树形视图数据功能
2018/05/07 Javascript
详解如何使用webpack打包JS
2018/06/21 Javascript
Webpack的dll功能使用
2018/06/28 Javascript
小程序分页实践之编写可复用分页组件
2019/07/18 Javascript
JavaScript React如何修改默认端口号方法详解
2020/07/28 Javascript
Js实现粘贴上传图片的原理及示例
2020/12/09 Javascript
Vue页面渲染中key的应用实例教程
2021/01/12 Vue.js
[59:15]EG vs LGD 2018国际邀请赛淘汰赛BO3 第一场 8.26
2018/08/29 DOTA
Python Requests 基础入门
2016/04/07 Python
分享Python开发中要注意的十个小贴士
2016/08/30 Python
python3.6 实现AES加密的示例(pyCryptodome)
2018/01/10 Python
Python编程二分法实现冒泡算法+快速排序代码示例
2018/01/15 Python
Selenium控制浏览器常见操作示例
2018/08/13 Python
Django之无名分组和有名分组的实现
2019/04/16 Python
如何利用python web框架做文件流下载的实现示例
2020/06/02 Python
css3 利用transform打造走动的2D时钟
2020/10/20 HTML / CSS
娇韵诗俄罗斯官方网站:Clarins俄罗斯
2020/10/03 全球购物
文秘专业毕业生就业推荐信
2013/11/08 职场文书
运动会入场解说词300字
2014/01/25 职场文书
精彩的广告词
2014/03/19 职场文书
建设单位项目负责人任命书
2014/06/06 职场文书
安全生产标语大全
2014/10/06 职场文书