MDK: Multimedia Development Kit
Features
- Simple and powerful API set
- Cross platform: Windows, UWP, Linux, macOS, Android, iOS, Raspberry Pi
- Hardware accelerated decoders
- 0-copy GPU rendering for all platforms and all renderers(Vulkan is WIP.)
- Dynamic OpenGL
- OpenGL, D3D11, Vulkan and Metal rendering w/ or w/o user provided context
- Integrated with any platform native ui apps, gui toolkits or other apps via OpenGL, D3D11, Vulkan and Metal (OBS, Qt, SDL, GLFW, SFML etc.) easily
- Seamless/Gapless media and bitrate switch for any media
- HDR rendering in GPU
- Optimized Continuous seeking. As fast as mpv, but much lower cpu, memory and gpu load. Suitable for timeline preview
- Smart FFmpeg runtime, dynamic load, compatible with 4.x/5.x abi
About SDK for Windows Desktop
SDK is built by
- clang-cl 13.0 + lld, with Windows SDK 10.0.19041.0, MSVC CRT 14.28.29333, FFmpeg
- latest vs2022 with FFmpeg
SDK can be used by any C or C++11 compiler, e.g. vs2015, vs2022, mingw g++, clang
Use in Visual Studio
Install via NuGet (Recommended)
mdk is published on https://www.nuget.org/packages/mdk/. Now you can install it in visual studio.
Import from Release Package
mdk sdk can be imported by vs projects. Insert the following line in your vcxproj as the last element of Project (assume mdk-sdk is in the same dir as vcxproj)
<Import Project="mdk-sdk\build\native\MDK.targets" Condition="Exists('mdk-sdk\build\native\MDK.targets')" />
Once installed or imported, necessary compile flags and link flags will be added, runtime dlls will be copied to output dir.
Use in CMake Projects
include(mdk-sdk-dir/lib/cmake/FindMDK.cmake)
target_link_libraries(your_target PRIVATE mdk)
- Vista+
- ucrt, vc140+ runtime
Optional:
- libEGL.dll, libGLESv2.dll, D3DCompiler_47/43.dll. Qt apps can use qt's dlls
- vulkan
- D3D11: recommended
- OpenGL(No UWP): via WGL. The default if EGL runtime is not found.
- OpenGL ES2/3: via ANGLE or others. The default if EGL runtime is found.
- Vulkan(No UWP)
- FFmpeg. options: threads=N. e.g. -c:v FFmpeg. -c:v FFmpeg:threads=4
- MFT. options: d3d=0/9/11, pool=0/1. e.g. -c:v MFT(software), -c:v MFT:d3d=11(hardware).
- CUDA(No UWP)
- D3D11: via FFmpeg
- DXVA(No UWP): via FFmpeg
- NVDEC(No UWP): via FFmpeg
- CUVID(No UWP): via FFmpeg
- QSV(No UWP): via FFmpeg
Examples
gapless playback for any audio and video: mdkplay.exe(or glfwplay.exe/window.exe/sdlplay.exe) file file2 ...
N players for 1 video: multiplayers -es -share -c:v D3D11 -win N url
N videos and N players: multiplayers -es -share -c:v D3D11 url1 url2 ... urlN
N videos renderers for 1 player: multiwidnows url
Source code:
Copyright (c) 2016-2021 WangBin(the author of QtAV)
Free for opensource softwares, non-commercial softwares, QtAV donors and contributors.