在编译OpenCV 源码过程中,需要下载第三方依赖包,由于种种原因,无法下载,导致编译中止
错误类型如下:

FFMPEG: Download: opencv_videoio_ffmpeg.dll Try 1 failed CMake Warning
at cmake/OpenCVDownload.cmake:202 (message): FFMPEG: Download
failed: 28;“Timeout was reached”

FFMPEG: Download: opencv_videoio_ffmpeg_64.dll Try 1 failed CMake
Warning at cmake/OpenCVDownload.cmake:202 (message): FFMPEG:
Download failed: 35;“SSL connect error”

以上错误:opencv_videoio_ffmpeg.dll 和 opencv_videoio_ffmpeg_64.dll下载失败导致。

查看,下载缓存opencv\sources.cache\ffmpeg,文件并未下载完成
在这里插入图片描述

解决方法

一、从其他地方下载以上两个文件,放在opencv\sources.cache\ffmpeg目录中

只需要下载对应的opencv_videoio_ffmpeg.dll 和 opencv_videoio_ffmpeg_64.dll即可,文件名前面的16进制前缀,为对应文件的md5值。
https://download.csdn.net/download/pyt1234567890/12492971

二、修改源码中文件MD5

下载后的文件如下,对应的MD5分别为5de6044cad9398549e57bc46fc13908d和 55c0bc8ad27db00116fabf06508de196
在这里插入图片描述
仅仅把下载的文件放在缓冲区中是不够的,因为自己下载的MD5有可能和源码中指定的MD5不一致,从而导致编译后,依旧无法下载指定是的文件,同样无法编译!

所以修改源码中指定的MD5。
打开文件opencv\sources\3rdparty\ffmpeg\ffmpeg.cmake
把如下两项对应的值,修改成以上文件的MD5,分别对应32位和64位的dll

ocv_update(FFMPEG_FILE_HASH_BIN32 "5de6044cad9398549e57bc46fc13908d")
ocv_update(FFMPEG_FILE_HASH_BIN64 "55c0bc8ad27db00116fabf06508de196")

注意:
其中文件对应关系,可以追溯原始MD5

三、再次编译

通过修改MD5,并和下载的文件对应起来,再次编译即可顺利成功!

注意:
以上方法仅适用于,所需文件版本差异不大的情况下。
如果文件版本差异太大,就必须下载指定的版本了

-----------------------------------------仅此记录-------------------------------------------------------

Logo

鸿蒙生态一站式服务平台。

更多推荐