microsoft / vcpkg

C++ Library Manager for Windows, Linux, and MacOS
MIT License
22.26k stars 6.17k forks source link

OpenCV does not build with proper video support for .mp4 videos #17850

Open morphogencc opened 3 years ago

morphogencc commented 3 years ago

I built opencv with the command:

./vcpkg install --triplet x64-windows-static opencv

and when I create a cv::VideoCapture class and open a video file, I get the following output:

[ INFO:0] global D:\Apps\vcpkg\buildtrees\opencv4\src\4.5.1-e92f755db3.clean\modules\videoio\src\videoio_registry.cpp (197) cv::`anonymous-namespace'::VideoBackendRegistry::VideoBackendRegistry VIDEOIO: Enabled backends(8, sorted by priority): FFMPEG(1000); GSTREAMER(990); INTEL_MFX(980); MSMF(970); DSHOW(960); CV_IMAGES(950); CV_MJPEG(940); UEYE(930)
[ INFO:0] global D:\Apps\vcpkg\buildtrees\opencv4\src\4.5.1-e92f755db3.clean\modules\videoio\src\backend_plugin.cpp (396) cv::impl::getPluginCandidates Found 3 plugin(s) for FFMPEG
[ INFO:0] global D:\Apps\vcpkg\buildtrees\opencv4\src\4.5.1-e92f755db3.clean\modules\videoio\src\backend_plugin.cpp (175) cv::impl::DynamicLib::libraryLoad load D:\Apps\sitara-opencv\examples\exampleVideoAnalyze\vc2019\x64\Debug\opencv_videoio_ffmpeg451_64d.dll => FAILED
[ INFO:0] global D:\Apps\vcpkg\buildtrees\opencv4\src\4.5.1-e92f755db3.clean\modules\videoio\src\backend_plugin.cpp (175) cv::impl::DynamicLib::libraryLoad load opencv_videoio_ffmpeg451_64d.dll => FAILED
[ INFO:0] global D:\Apps\vcpkg\buildtrees\opencv4\src\4.5.1-e92f755db3.clean\modules\videoio\src\backend_plugin.cpp (175) cv::impl::DynamicLib::libraryLoad load opencv_videoio_ffmpeg451_64.dll => FAILED
[ INFO:0] global D:\Apps\vcpkg\buildtrees\opencv4\src\4.5.1-e92f755db3.clean\modules\videoio\src\backend_plugin.cpp (396) cv::impl::getPluginCandidates Found 2 plugin(s) for GSTREAMER
[ INFO:0] global D:\Apps\vcpkg\buildtrees\opencv4\src\4.5.1-e92f755db3.clean\modules\videoio\src\backend_plugin.cpp (175) cv::impl::DynamicLib::libraryLoad load D:\Apps\sitara-opencv\examples\exampleVideoAnalyze\vc2019\x64\Debug\opencv_videoio_gstreamer451_64d.dll => FAILED
[ INFO:0] global D:\Apps\vcpkg\buildtrees\opencv4\src\4.5.1-e92f755db3.clean\modules\videoio\src\backend_plugin.cpp (175) cv::impl::DynamicLib::libraryLoad load opencv_videoio_gstreamer451_64d.dll => FAILED
[ INFO:0] global D:\Apps\vcpkg\buildtrees\opencv4\src\4.5.1-e92f755db3.clean\modules\videoio\src\backend_plugin.cpp (396) cv::impl::getPluginCandidates Found 2 plugin(s) for INTEL_MFX
[ INFO:0] global D:\Apps\vcpkg\buildtrees\opencv4\src\4.5.1-e92f755db3.clean\modules\videoio\src\backend_plugin.cpp (175) cv::impl::DynamicLib::libraryLoad load D:\Apps\sitara-opencv\examples\exampleVideoAnalyze\vc2019\x64\Debug\opencv_videoio_intel_mfx451_64d.dll => FAILED
[ INFO:0] global D:\Apps\vcpkg\buildtrees\opencv4\src\4.5.1-e92f755db3.clean\modules\videoio\src\backend_plugin.cpp (175) cv::impl::DynamicLib::libraryLoad load opencv_videoio_intel_mfx451_64d.dll => FAILED
[ WARN:0] global D:\Apps\vcpkg\buildtrees\opencv4\src\4.5.1-e92f755db3.clean\modules\videoio\src\cap_msmf.cpp (677) CvCapture_MSMF::initStream Failed to set mediaType (stream 0, (960x960 @ 30) MFVideoFormat_RGB32(codec not found)

Adding the ffmpeg feature reproduces issue #9571. What build features should I add to properly be able to replay videos?

JackBoosY commented 3 years ago

cc @cenit

cenit commented 3 years ago

you need the ffmpeg feature, with its own extra-features too if the codec is non standard. Let's try to fix the ffmpeg issue first

kLiHz commented 2 years ago

Maybe you could try fixing this temporarily by copying opencv_videoio_ffmpeg453_64.dll to the system lib directory (which is X:/Windows/System32) or just where the built executable is. This dll file should be shipped with OpenCV official Windows release.

I tried this, and the executable was able to use ffmpeg as videoio backend. Then things work out just fine.