mdk 0.4.1

C/C++ Multimedia Development Kit

Install-Package mdk -Version 0.4.1
dotnet add package mdk --version 0.4.1
<PackageReference Include="mdk" Version="0.4.1" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add mdk --version 0.4.1
The NuGet Team does not provide support for this client. Please contact its maintainers for support.

MDK: Multimedia Development Kit

Features

  • Simple and powerful API set
  • Cross platform: Windows, UWP, Linux, macOS, Android, iOS, Raspberry Pi
  • Hardware accelerated decoding and 0-copy GPU rendering for all supported platforms
  • OpenGL rendering w/ or w/o user provided context
  • Ingegrated with any gui toolkits via OpenGL (Qt, SDL, glfw, SFML etc.) easily
  • Seamless/Gapless media and bitrate switch for any media
  • Configurable FFmpeg runtime libraries.
  • HDR rendering in GPU

FFmpeg Runtime Lookup

FFmpeg modules can be specified via environment var AVUTIL_LIB, AVCODEC_LIB, AVFORMAT_LIB, AVFILTER_LIB, SWRESAMPLE_LIB, SWSCALE_LIB, or SetGlobalOption() with key avutil_lib, avcodec_lib, avformat_lib, swresample_lib, swscale_lib, avfilter_lib. For example SetGlobalOption(&quot;avutil_lib&quot;, &quot;ffmpeg-4.dll&quot;)

If ffmpeg any module is not set, it's searched in the following order

  • current module dir > framework dir(apple) > system default search dir
  • single ffmpeg library > ffmpeg modules w/ version > ffmpeg modules w/o version

About SDK for Windows Desktop

SDK is built by clang-cl 9.0 + lld with

  • FFmpeg: https://sourceforge.net/projects/avbuild/files/windows-desktop/ffmpeg-master-windows-desktop-clang-static-lite.tar.xz/download
  • Windows SDK 10.0.18362.0
  • MSVC CRT 14.22.27905

SDK can be used by any C or C++11 compiler, e.g. vs2015, vs2017, 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.

Runtime Requirements

  • Vista+
  • ucrt, vc140+ runtime

Recommended(optional):

  • libEGL.dll, libGLESv2.dll, D3DCompiler_47/43.dll. Better performance especially for hardware decoding 0-copy rendering. Qt apps can use qt's dlls

Supported decoders:

  • 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
  • D3D11: via FFmpeg
  • DXVA: via FFmpeg
  • NVDEC: via FFmpeg
  • CUVID: via FFmpeg
  • QSV: via FFmpeg, not tested

Supported Graphics APIs:

  • OpenGL: via WGL. The default if EGL runtime is not found.
  • OpenGL ES2/3: via ANGLE or others. The default if EGL runtime is found.

ANGLE OpenGL ES2/3 is recommended on Windows. 0 overhead for GPU decoder rendering.

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:

  • some examples using mdk sdk: https://github.com/wang-bin/mdk-examples
  • QtMultimedia plugin: https://github.com/wang-bin/qtmultimedia-plugins-mdk

Copyright (c) 2016-2019 WangBin(the author of QtAV) <wbsecg1 at gmail.com>
Free for non-commercial use.

MDK: Multimedia Development Kit

Features

  • Simple and powerful API set
  • Cross platform: Windows, UWP, Linux, macOS, Android, iOS, Raspberry Pi
  • Hardware accelerated decoding and 0-copy GPU rendering for all supported platforms
  • OpenGL rendering w/ or w/o user provided context
  • Ingegrated with any gui toolkits via OpenGL (Qt, SDL, glfw, SFML etc.) easily
  • Seamless/Gapless media and bitrate switch for any media
  • Configurable FFmpeg runtime libraries.
  • HDR rendering in GPU

FFmpeg Runtime Lookup

FFmpeg modules can be specified via environment var AVUTIL_LIB, AVCODEC_LIB, AVFORMAT_LIB, AVFILTER_LIB, SWRESAMPLE_LIB, SWSCALE_LIB, or SetGlobalOption() with key avutil_lib, avcodec_lib, avformat_lib, swresample_lib, swscale_lib, avfilter_lib. For example SetGlobalOption(&quot;avutil_lib&quot;, &quot;ffmpeg-4.dll&quot;)

If ffmpeg any module is not set, it's searched in the following order

  • current module dir > framework dir(apple) > system default search dir
  • single ffmpeg library > ffmpeg modules w/ version > ffmpeg modules w/o version

About SDK for Windows Desktop

SDK is built by clang-cl 9.0 + lld with

  • FFmpeg: https://sourceforge.net/projects/avbuild/files/windows-desktop/ffmpeg-master-windows-desktop-clang-static-lite.tar.xz/download
  • Windows SDK 10.0.18362.0
  • MSVC CRT 14.22.27905

SDK can be used by any C or C++11 compiler, e.g. vs2015, vs2017, 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.

Runtime Requirements

  • Vista+
  • ucrt, vc140+ runtime

Recommended(optional):

  • libEGL.dll, libGLESv2.dll, D3DCompiler_47/43.dll. Better performance especially for hardware decoding 0-copy rendering. Qt apps can use qt's dlls

Supported decoders:

  • 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
  • D3D11: via FFmpeg
  • DXVA: via FFmpeg
  • NVDEC: via FFmpeg
  • CUVID: via FFmpeg
  • QSV: via FFmpeg, not tested

Supported Graphics APIs:

  • OpenGL: via WGL. The default if EGL runtime is not found.
  • OpenGL ES2/3: via ANGLE or others. The default if EGL runtime is found.

ANGLE OpenGL ES2/3 is recommended on Windows. 0 overhead for GPU decoder rendering.

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:

  • some examples using mdk sdk: https://github.com/wang-bin/mdk-examples
  • QtMultimedia plugin: https://github.com/wang-bin/qtmultimedia-plugins-mdk

Copyright (c) 2016-2019 WangBin(the author of QtAV) <wbsecg1 at gmail.com>
Free for non-commercial use.

Release Notes

https://github.com/wang-bin/mdk-sdk/releases

Dependencies

This package has no dependencies.

This package is not used by any popular GitHub repositories.

Version History

Version Downloads Last updated
0.4.1 30 10/9/2019