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实现一次创建多级目录的方法
May 15 Python
用python写个自动SSH登录远程服务器的小工具(实例)
Jun 17 Python
python安装Scrapy图文教程
Aug 14 Python
Python实现可自定义大小的截屏功能
Jan 20 Python
Python numpy 提取矩阵的某一行或某一列的实例
Apr 03 Python
详解flask入门模板引擎
Jul 18 Python
python 执行终端/控制台命令的例子
Jul 12 Python
用Python爬取LOL所有的英雄信息以及英雄皮肤的示例代码
Jul 13 Python
python 求两个向量的顺时针夹角操作
Mar 04 Python
解决numpy和torch数据类型转化的问题
May 23 Python
anaconda python3.8安装后降级
Jun 11 Python
Python使用plt.boxplot()函数绘制箱图、常用方法以及含义详解
Aug 14 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
业余方法DIY电子管FM收音机
2021/03/02 无线电
php判断终端是手机还是电脑访问网站的思路及代码
2013/04/24 PHP
PHP连接局域网MYSQL数据库的简单实例
2013/08/26 PHP
php 二维数组时间排序实现代码
2016/11/19 PHP
JavaScript 检测浏览器和操作系统的脚本
2008/12/26 Javascript
JQuery 风格的HTML文本转义
2009/07/01 Javascript
JavaScript定义类或函数的几种方式小结
2011/01/09 Javascript
解析页面加载与js函数的执行 onload or ready
2013/12/12 Javascript
js 获取元素下面所有li的两种方法
2014/04/14 Javascript
简述JavaScript中正则表达式的使用方法
2015/06/15 Javascript
jQuery添加和删除指定标签的方法
2015/12/16 Javascript
一系列Bootstrap导航条使用方法分享
2016/04/29 Javascript
利用CSS、JavaScript及Ajax实现图片预加载的方法
2016/11/29 Javascript
Bootstrap 模态对话框只加载一次 remote 数据的完美解决办法
2017/07/09 Javascript
Canvas放置反弹效果随机图形(实例)
2017/08/17 Javascript
ionic grid(栅格)九宫格制作详解
2018/06/30 Javascript
微信小程序学习笔记之表单提交与PHP后台数据交互处理图文详解
2019/03/28 Javascript
js逆向解密之网络爬虫
2019/05/30 Javascript
node.js处理前端提交的GET请求
2019/08/30 Javascript
python爬虫入门教程之点点美女图片爬虫代码分享
2014/09/02 Python
python插入数据到列表的方法
2015/04/30 Python
举例讲解Python中的死锁、可重入锁和互斥锁
2015/11/05 Python
python爬虫自动创建文件夹的功能
2018/08/01 Python
windows下python安装小白入门教程
2018/09/18 Python
python用插值法绘制平滑曲线
2021/02/19 Python
python爬取cnvd漏洞库信息的实例
2019/02/14 Python
python中pickle模块浅析
2020/12/29 Python
英国排名第一的LED灯泡网站:LED Bulbs
2019/09/03 全球购物
丝芙兰墨西哥官网:Sephora墨西哥
2020/05/30 全球购物
《乌鸦和狐狸》教学反思
2014/02/08 职场文书
高三家长寄语
2014/04/03 职场文书
本科生导师推荐信范文
2014/05/18 职场文书
中学生运动会口号
2014/06/07 职场文书
离婚协议书的书写要求
2014/09/17 职场文书
部门主管竞聘书
2015/09/15 职场文书
2016年母亲节广告语
2016/01/28 职场文书