CMake编译OpenCV4.0时opencv_ffmpeg.dll等下载失败的解决思路总结
一、Configure会报一些红色的警告信息,比如:
1 CMake Warning at cmake/OpenCVDownload.cmake:193 (message):
2 FFMPEG: Download failed: 7;"Couldn't connect to server"
3
4 For details please refer to the download log file:
5
6 D:/study/opencv_with_contrib_test_sln/CMakeDownloadLog.txt
7
8 Call Stack (most recent call first):
9 3rdparty/ffmpeg/ffmpeg.cmake:20 (ocv_download)
10 cmake/OpenCVFindLibsVideo.cmake:200 (download_win_ffmpeg)
11 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(不用重命名)。
注意:
而是直接打开了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、当发现百度到的解决办法基本雷同时,就不必花大量时间去检索和自己的问题一模一样的博文了,这样只会浪费时间,心情也会变得焦躁,此时应该冷静的去思考。