Fixed pre-built ffmpeg diagnostics on Windows for ARM. #27977
### Pull Request Readiness Checklist
See details at https://github.com/opencv/opencv/wiki/How_to_contribute#making-a-good-pull-request
- [x] I agree to contribute to the project under Apache 2 License.
- [x] To the best of my knowledge, the proposed patch is not based on a code under GPL or another license that is incompatible with OpenCV
- [ ] The PR is proposed to the proper branch
- [ ] There is a reference to the original bug report and related work
- [ ] There is accuracy test, performance test and test data in opencv_extra repository, if applicable
Patch to opencv_extra has the same branch name.
- [ ] The feature is well documented and sample code can be built with the project CMake
Open camera device by index through FFmpeg #27841
### Pull Request Readiness Checklist
resolves https://github.com/opencv/opencv/issues/26812
Example of explicit backend option (similar to `-f v4l2` from command line)
```
export OPENCV_FFMPEG_CAPTURE_OPTIONS="f;v4l2"
```
see https://trac.ffmpeg.org/wiki/Capture/Webcam for available options
See details at https://github.com/opencv/opencv/wiki/How_to_contribute#making-a-good-pull-request
- [x] I agree to contribute to the project under Apache 2 License.
- [x] To the best of my knowledge, the proposed patch is not based on a code under GPL or another license that is incompatible with OpenCV
- [x] The PR is proposed to the proper branch
- [x] There is a reference to the original bug report and related work
- [x] There is accuracy test, performance test and test data in opencv_extra repository, if applicable
Patch to opencv_extra has the same branch name.
- [x] The feature is well documented and sample code can be built with the project CMake
Introduce libavdevice to make v4l2 available to the ffmpeg backend
* introduce libavdevice to make v4l2 available to the ffmpeg backend
* downgrade the min required libavdevice version to 53.2.0
* make libavdevice optional
* create OCV_OPTION OPENCV_FFMPEG_ENABLE_LIBAVDEVICE and add definition through ocv_add_external_target
* move OCV_OPTION 'OPENCV_FFMPEG_ENABLE_LIBAVDEVICE' to detect_ffmpeg.cmake
Remove obsolete FFMPEG versions support
* refactor: removed obsolete FFMPEG version support
- Oldest available version via official FFMPEG repository mirror has tag v.0.5
LIBAVFORMAT version for this tag is 52.31.0
* refactor: prefer std::min function to MIN macro
* refactor: use appropriate macro instead of manual version calculation
* refactor: remove macros for versions prior 0.5.15 release
* refactor: remove libavcodec macros for versions < 54.35.1 (default to Ubuntu 14.04)
* refactor: remove libavformat macro for versions < 54.20.4 (default ubuntu 14.04)
* refactor: remove libavutil macro for versions < 52.3.0 (default ubuntu 14.04)
* refactor: remove missed macros for libavcodec and libavformat
* refactor: remove unused _opencv_ffmpeg_free function
* build: add FFMPEG libraries versions checks
- Add verbose message about what FFMPEG libraries are missing.
- Add minimal versions check set to libav 9.20 release (default ubuntu 14.04) and FFMPEG 1.1.16 release.
If the check is failed CMake produces user-friendly message instead of build error.
* fix: libavcodec version guard for AVDISCARD_NONINTRA
* fix: libav check of libavcodec version guard for AVDISCARD_NONINTRA
* fix: version check for AV_CODEC_FLAG_GLOBAL_HEADER
* fix: missing FFMPEG libraries output