1. 程式人生 > >從原理理解並解決 Opencv 無法讀取視訊

從原理理解並解決 Opencv 無法讀取視訊

原理

Opencv 利用 VideoCapture 讀取視訊,底層是由 FFmpeg 支援解析讀取視訊,這個檔案是 Opencv2_4_9\build\x64\vc12\bin 目錄下的 opencv_ffmpeg249_64.dll,不同的 Opencv 版本名字不一樣

Opencv 不能讀取視訊時,要去查 FFmpeg 支援的視訊編碼格式,而不是檔案的格式

FFmpeg 支援的視訊編碼格式才能被 Opencv 讀取

如何檢視視訊的編碼方式:https://blog.csdn.net/CV2017/article/details/86090592

FFmpeg 支援的視訊編碼格式:https://blog.csdn.net/caoshangpa/article/details/51200110

視訊編碼格式、視訊格式區別:https://www.zhihu.com/question/20997688/answer/29642529

示例

現有兩個同是 MP4 檔案格式的視訊,1.mp4 可以被 Opencv 讀取,2.mp4 無法被 Opencv 讀取,這是因為 1.mp4 的編碼方式為 hecv,2.mp4 編碼方式為 h264,可以查 FFmpeg 支援的視訊編碼格式得知如下圖

 可以看到 HEVC 無法被 FFmpeg 編碼,而 h264 可以

解決方案

更換相機或轉換視訊編碼方式

下載 Apowersoft視訊轉換王 https://www.apowersoft.cn/video-converter-studio

匯入視訊後,可以看到 2.mp4 為 hevc 封裝格式,那麼要進行下一步轉換了

點選設定,確保紅色圈內是 H.264後,點選確定

 

 點選輸出目錄右邊的下箭頭,選擇輸出的目錄,然後點選轉換即可,那麼新轉換後的視訊就可以被 Opencv 讀取了