從原理理解並解決 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 讀取了