Python imageio读取视频并进行编解码详解

作者:Anymake 时间:2021-02-20 07:32:53 

读视频和写视频一直由于编解码的问题给程序员造成很多麻烦。对此进行了一些探索。用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()

来源:https://blog.csdn.net/Anymake_ren/article/details/78753707

标签:Python,imageio,视频,编解码
0
投稿

猜你喜欢

  • Anaconda 查看、创建、管理和使用python环境的方法

    2023-11-29 02:34:48
  • PL/SQL 日期时间类型函数及运算

    2009-02-26 10:45:00
  • Python3常见函数range()用法详解

    2021-04-20 10:34:19
  • python DataFrame 取差集实例

    2021-06-06 01:22:24
  • 如何利用Python监控别人的网站

    2022-08-11 16:54:18
  • Python使用openpyxl读写excel文件的方法

    2021-02-06 07:24:37
  • Python3.6安装及引入Requests库的实现方法

    2022-06-12 16:55:46
  • PyTorch中Tensor的数据类型和运算的使用

    2023-01-04 14:53:21
  • np.newaxis()函数的具体使用

    2022-01-10 08:38:27
  • 基于python中staticmethod和classmethod的区别(详解)

    2023-09-30 22:03:32
  • python查看微信好友是否删除自己

    2021-01-31 23:16:32
  • python/golang实现循环链表的示例代码

    2021-10-31 23:32:20
  • OpenCV凸包检测和凸缺陷学习示例

    2021-08-20 15:26:20
  • python实点云分割k-means(sklearn)详解

    2023-11-06 20:36:03
  • Python基于stuck实现scoket文件传输

    2023-06-06 22:59:50
  • Python不支持 i ++ 语法的原因解析

    2022-02-07 12:16:49
  • python实现从ftp上下载文件的实例方法

    2021-04-24 16:37:02
  • Python基础之函数嵌套知识总结

    2021-12-07 18:54:09
  • 在Django的模型中添加自定义方法的示例

    2021-12-07 17:14:58
  • 跟老齐学Python之list和str比较

    2021-02-26 22:36:36
  • asp之家 网络编程 m.aspxhome.com