Python imageio讀取視頻并進行編解碼詳解
讀視頻和寫視頻一直由于編解碼的問題給程序員造成很多麻煩。對此進行了一些探索。用Python讀取視頻有兩種主要方法,分別是基于imageio庫和OpenCV,其中OpenCV加上ffmpeg的安裝編譯很麻煩,推薦大家使用第一種方法,不過大家也可依據(jù)自己的需求進行使用。
方法一:使用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環(huán)境下安裝使用異步任務隊列包Celery的基礎教程
這篇文章主要介紹了Python環(huán)境下安裝使用異步任務隊列包Celery的基礎教程,Celery的分布式任務管理適合用于服務器集群的管理和維護,需要的朋友可以參考下2016-05-05
python+Word2Vec實現(xiàn)中文聊天機器人的示例代碼
本文主要介紹了python+Word2Vec實現(xiàn)中文聊天機器人,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-03-03
Python數(shù)據(jù)分析numpy文本數(shù)據(jù)讀取索引切片實例詳解
這篇文章主要為大家介紹了Python數(shù)據(jù)分析numpy文本數(shù)據(jù)讀取索引切片實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-08-08
Python 專題二 條件語句和循環(huán)語句的基礎知識
本文主要介紹了Python條件語句和循環(huán)語句的基礎知識。主要內容包括: 1.條件語句:包括單分支、雙分支和多分支語句,if-elif-else;2.循環(huán)語句:while的使用及簡單網絡刷博器爬蟲;3.循環(huán)語句:for的使用及遍歷列表、元組、文件和字符串。2017-03-03

