- Simple and powerful API set
- Cross platform: Windows(x86, arm), UWP, Linux, macOS, Android, iOS, tvOS, visionOS, Raspberry Pi
- Hardware accelerated decoders
- 0-copy GPU rendering for all platforms and all renderers(Vulkan is WIP.)
- Dynamic OpenGL
- OpenGL, D3D11, D3D12, 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/12, Vulkan and Metal (WinUI3, OBS, Flutter, Qt, SDL, GLFW, SFML, .NET Avalonia etc.) easily
- HDR display, HDR to SDR and SDR to HDR tone mapping. You can use HDR display in Qt6(6.6+ for macOS, 6.x for windows), OBS Studio and more.
- Dolby Vision rendering, including Profile 5. Support HEVC and AV1.
- Seamless/Gapless media and bitrate switch for any media
- Optimized Continuous seeking. As fast as mpv, but much lower cpu, memory and gpu load. Suitable for timeline preview
- Subtitle rendering, including ass, plain text, bitmap, closed caption
- Smart FFmpeg runtime, dynamic load, binary compatible with 4.0~7.x
- Professional codecs: GPU accelerated HAP codec rendering, Blackmagic RAW, R3D
https://github.com/wang-bin/swift-mdk
SDK is built by Xcode 16 with
- ffmpeg: https://sourceforge.net/projects/avbuild/files/iOS/ffmpeg-master-iOS-lite-lto.tar.xz/download
- Minimal system: iOS 8.0
- Support Metal renderer
- Metal: recommended
- OpenGL ES2/3
- VT: videotoolbox hardware decoder. h264, hevc support. propertyes: threads, realTime, async, format, hardware, width, height. e.g.
player.setVideoDecoders({"VT:format=nv12:async=1", "FFmpeg"})
- VideoToolbox: via ffmpeg
- FFmpeg. Direct rendering via property "pool=CVPixelBuffer"
include(mdk-sdk-dir/lib/cmake/FindMDK.cmake)
target_link_libraries(your_target PRIVATE mdk)
include($$MDK_SDK_DIR/mdk.pri)
- macOS, iOS:
player.setDecoders(MediaType::Video, {"VT", "hap", "FFmpeg", "dav1d"});
Choose any of
- Add mdk.xcframework to your project(Embed & Sign)
- install via cocoapods
pod 'mdk'
Choose any of
- In
Build Settings
add--deep
toOther Code Signing Flags
- (Recommended) In
Build Phase
, add aNew Run Script Phase
with content[ -n "$CODE_SIGN_IDENTITY" ] && find "$BUILT_PRODUCTS_DIR" -depth -name "libffmpeg*.dylib" -exec codesign -i mdk.framework.ffmpeg -f -vvvv -s"${EXPANDED_CODE_SIGN_IDENTITY}" ${OTHER_CODE_SIGN_FLAGS:-} --preserve-metadata=identifier,entitlements,flags {} \;
- some examples using mdk sdk
- OBS Studio plugin
- QtMultimedia plugin
- MFT decoder module
- dav1d decoder module
- Blackmagic RAW
Copyright (c) 2016-2024 WangBin(the author of QtAV) Free for opensource softwares, non-commercial softwares, flutter, QtAV donors and contributors.