1. 程式人生 > >關於CMake編譯OpenCV時opencv_ffmpeg.dll、ippicv等下載失敗的解決辦法及感悟

關於CMake編譯OpenCV時opencv_ffmpeg.dll、ippicv等下載失敗的解決辦法及感悟

不用 spa conf stack 大量 for http tar out

一、Configure會報一些紅色的警告信息,比如:

CMake Warning at cmake/OpenCVDownload.cmake:193 (message):
FFMPEG: Download failed: 7;"Couldn‘t connect to server"

For details please refer to the download log file:

D:/study/opencv_with_contrib_test_sln/CMakeDownloadLog.txt

Call Stack (most recent call first):
3rdparty/ffmpeg/ffmpeg.cmake:20 (ocv_download)


cmake/OpenCVFindLibsVideo.cmake:200 (download_win_ffmpeg)
CMakeLists.txt:636 (include)

提示FFMPEG下載失敗,因為無法連接到服務器,打開 CMakeDownloadLog.txt 查看詳細信息。

二、打開CMakeDownloadLog.txt

#use_cache "D:/study/opencv-4.0.0/.cache"
#do_copy "opencv_ffmpeg.dll" "849286ccc527c99e5a218b67f13c6e8c" "https://raw.githubusercontent.com/opencv/opencv_3rdparty/759a23e24ab787a0979f8a93103dcc3105ec10c1/ffmpeg/opencv_ffmpeg.dll
" "D:/study/opencv_with_contrib_test_sln/3rdparty/ffmpeg" 這兩句的意思是說將 opencv_ffmpeg.dll(它的md5簽名是 849286ccc527c99e5a218b67f13c6e8c,下載地址是 "https://raw.githubusercontent.com/opencv/opencv_3rdparty/759a23e24ab787a0979f8a93103dcc3105ec10c1/ffmpeg/opencv_ffmpeg.dll"
"D:/study/opencv-4.0.0/.cache" 拷貝到 "D:/study/opencv_with_contrib_test_sln/3rdparty/ffmpeg
"目錄下。 #missing "D:/study/opencv_with_contrib_test_sln/3rdparty/ffmpeg/opencv_ffmpeg.dll"——目標目錄下沒有此文件 #cmake_download "D:/study/opencv-4.0.0/.cache/ffmpeg/849286ccc527c99e5a218b67f13c6e8c-opencv_ffmpeg.dll" "https://raw.githubusercontent.com/opencv/opencv_3rdparty/759a23e24ab787a0979f8a93103dcc3105ec10c1/ffmpeg/opencv_ffmpeg.dll"
下載此文件到源代碼路徑 /.cache/ffmpeg/,並命名為"md5-文件名" # timeout on name lookup is not supported # Trying 151.101.108.133... # TCP_NODELAY set # connect to 151.101.108.133 port 443 failed: Connection refused # Failed to connect to raw.githubusercontent.com port 443: Connection refused # Closing connection 0 #

連接到服務器失敗

三、分析

由於是公司工作機,無法訪問外網,自然就無法連接到下載服務器。那就直接通過外網下載好需要的文件,然後重命名為"md5-文件名",放在 /.cache/ffmpeg/ 文件夾下面,或者直接放到目標路徑 /3rdparty/ffmpeg/opencv_ffmpeg.dll(不用重命名)。

註意:

1、 https://raw.githubusercontent.com/opencv/opencv_3rdparty/759a23e24ab787a0979f8a93103dcc3105ec10c1/ffmpeg/ffmpeg_version.cmake" 無法直接下載,

而是直接打開了ffmpeg_version.cmake,可以右鍵網頁選擇另存為 ffmpeg_version.cmake.txt,然後再改為ffmpeg_version.cmake。這裏如果自己新建一個txt,然後直接將網頁上的內容拷進去,然後再該後綴為.cmake是不行的,會提示md5不匹配。

2、不同版本的OpenCV對應的 opencv_ffmpeg.dll 等缺失文件的 md5 簽名是不一樣的

四、總結

1、問題不難,一步一步的去求解;

2、沈下心來看英文,比六級簡單得多;

3、ffmpeg_version.cmake 這個直接通過連接是不能直接下載的,自己新建一個.cmake不行的時候就去看下為什麽不行,而不是不停的重復相同的操作以期望奇跡的出現。

4、當發現百度到的解決辦法基本雷同時,就不必花大量時間去檢索和自己的問題一模一樣的博文了,這樣只會浪費時間,心情也會變得焦躁,此時應該冷靜的去思考。

關於CMake編譯OpenCV時opencv_ffmpeg.dll、ippicv等下載失敗的解決辦法及感悟