1. 程式人生 > 程式設計 >Python imageio讀取視訊並進行編解碼詳解

Python imageio讀取視訊並進行編解碼詳解

讀視訊和寫視訊一直由於編解碼的問題給程式設計師造成很多麻煩。對此進行了一些探索。用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讀取視訊並進行編解碼詳解就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。