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
投稿

猜你喜欢

  • django 2.0更新的10条注意事项总结

    2023-05-22 10:48:35
  • Python轻松破解加密压缩包教程详解

    2021-04-12 13:26:45
  • oracle scott 解锁步骤

    2024-01-21 10:27:30
  • python的reverse函数翻转结果为None的问题

    2022-06-20 16:27:32
  • Python手动实现Hough圆变换的示例代码

    2023-11-03 03:12:42
  • asp.net中调用winrar实现压缩解压缩的代码

    2023-07-18 14:30:30
  • PDO::rollBack讲解

    2023-07-23 06:52:34
  • python实现图像降噪

    2022-03-09 06:36:38
  • MySQL安装配置以及安装失败解决过程

    2024-01-13 18:55:28
  • oracle远程连接服务器数据库图文教程

    2023-07-12 22:22:37
  • PyTorch梯度裁剪避免训练loss nan的操作

    2022-02-16 10:56:23
  • 解决python spyder 突然打不开的问题

    2022-07-07 19:43:06
  • Mysql错误1366 - Incorrect integer value解决方法

    2024-01-13 03:21:35
  • Python中的集合介绍

    2022-09-10 03:49:52
  • SQL数据库优化大总结之百万级数据库优化方案

    2024-01-16 09:42:10
  • 将HTML自动转为JS代码

    2010-03-17 20:49:00
  • sqlserver之datepart和datediff应用查找当天上午和下午的数据

    2024-01-14 22:27:42
  • Python面向对象编程中的类和对象学习教程

    2023-08-14 06:47:30
  • 举例讲解Python常用模块

    2022-03-21 07:35:49
  • 如何在Python中将字符串转换为集合

    2023-08-26 07:31:11
  • asp之家 网络编程 m.aspxhome.com