All Projects → ffmpeginteropx → Ffmpeginteropx

ffmpeginteropx / Ffmpeginteropx

Licence: apache-2.0
FFmpeg decoding library for Windows 10 UWP Apps

Projects that are alternatives of or similar to Ffmpeginteropx

Calculator
Windows Calculator: A simple yet powerful calculator that ships with Windows
Stars: ✭ 23,274 (+24659.57%)
Mutual labels:  windows-10, uwp
Win10bloatremover
Configurable CLI tool to easily and aggressively debloat and tweak Windows 10 by removing preinstalled UWP apps, services and more. Originally based on the W10 de-botnet guide made by @adolfintel.
Stars: ✭ 37 (-60.64%)
Mutual labels:  windows-10, uwp
Windowscompositionsamples
Windows Composition Samples the place for getting the latest code samples and demos using Windows.UI.Xaml and Windows.UI.Composition to make beautiful Universal Windows Platform applications.
Stars: ✭ 922 (+880.85%)
Mutual labels:  windows-10, uwp
Microsoft Ui Xaml
Windows UI Library: the latest Windows 10 native controls and Fluent styles for your applications
Stars: ✭ 4,428 (+4610.64%)
Mutual labels:  windows-10, uwp
Ui For Uwp
This repo contains the source code for Telerik UI for Universal Windows Platform (UWP), which includes 20+ UI controls for developers building UWP applications.
Stars: ✭ 1,077 (+1045.74%)
Mutual labels:  windows-10, uwp
Windowscommunitytoolkit
The Windows Community Toolkit is a collection of helpers, extensions, and custom controls. It simplifies and demonstrates common developer tasks building UWP and .NET apps for Windows 10. The toolkit is part of the .NET Foundation.
Stars: ✭ 4,654 (+4851.06%)
Mutual labels:  windows-10, uwp
Mvvmlight
The main purpose of the toolkit is to accelerate the creation and development of MVVM applications in Xamarin.Android, Xamarin.iOS, Xamarin.Forms, Windows 10 UWP, Windows Presentation Foundation (WPF), Silverlight, Windows Phone.
Stars: ✭ 973 (+935.11%)
Mutual labels:  windows-10, uwp
Lottieuwp
UWP port of Lottie(https://github.com/airbnb/lottie-android)
Stars: ✭ 276 (+193.62%)
Mutual labels:  windows-10, uwp
Uwp App Launcher Mobile
[Open Source] It's like the iOS and Android Home Screens but for Windows 10 (Phones).
Stars: ✭ 47 (-50%)
Mutual labels:  windows-10, uwp
Dawnplayer
A FLV playback library for Windows 10 UWP.
Stars: ✭ 46 (-51.06%)
Mutual labels:  windows-10, uwp
Xamlflair
XamlFlair is an animation library for UWP, WPF, and Uno, built to facilitate Xaml animations using only attached properties.
Stars: ✭ 362 (+285.11%)
Mutual labels:  windows-10, uwp
Files
A modern file manager that pushes the boundaries of the platform.
Stars: ✭ 15,198 (+16068.09%)
Mutual labels:  uwp, windows-10
Lottie Windows
Lottie-Windows is a library (and related tools) for rendering Lottie animations on Windows 10.
Stars: ✭ 322 (+242.55%)
Mutual labels:  windows-10, uwp
Fluent Xaml Theme Editor
The Fluent Design XAML theme editor.
Stars: ✭ 437 (+364.89%)
Mutual labels:  windows-10, uwp
Avbuild
ffmpeg花式编译. build tool for all platforms: iOS, android, raspberry pi, win32, uwp, linux, macOS etc.
Stars: ✭ 285 (+203.19%)
Mutual labels:  ffmpeg, uwp
Mingw Windows10 Uwp
Minimal Windows 10 Store ready sample of MinGW dll PInvoked from Windows 10 UWP application
Stars: ✭ 21 (-77.66%)
Mutual labels:  windows-10, uwp
Breadplayer
Bread Player, a free and open source music player powered by UWP and C#/.NET with a sleek and polished design built for, and by, the people seeking a better alternative to Groove and Windows Media Player by Microsoft.
Stars: ✭ 267 (+184.04%)
Mutual labels:  windows-10, uwp
Sylphyhorn
Virtual Desktop Tools for Windows 10.
Stars: ✭ 271 (+188.3%)
Mutual labels:  windows-10, uwp
Gank.uwp
http://gank.io 第三方客户端UWP版
Stars: ✭ 41 (-56.38%)
Mutual labels:  windows-10, uwp
Win10 Explorer
A new windows 10 file explorer
Stars: ✭ 58 (-38.3%)
Mutual labels:  windows-10, uwp

FFmpegInteropX library for Windows

This project is licensed under the Apache 2.0 License

Welcome to FFmpegInteropX

FFmpegInteropX is an open-source project that aims to provide an easy way to use FFmpeg in Windows 10 UWP Apps. This allows you to decode a lot of formats that are not natively supported on Windows 10.

FFmpegInteropX is a much improved fork of the original Microsoft project.

Latest Releases:

Some of the important improvements, compared to original version:

  • NuGet packages!!
  • Multiple video and audio stream support
  • Subtitle support, including external subtitle files
  • Native D3D11 hardware decoding for all major formats:
    • H264, HEVC, VC1, VP8, VP9, WMV3, MPEG2
  • FFmpeg video and audio effects (special thanks to mcosmin222!)
  • Super fast GPU-based video postprocessing effects
  • Major performance improvements (zero-copy data handling in all important areas)
  • Frame grabber support
  • Fast Seeking support (seek to keyframes)
  • Stream information retrieval (name, language, format, etc)
  • Chapter information support
  • API improvements
  • Include zlib and bzlib libraries into ffmpeg for full MKV subtitle support
  • Include iconv for character encoding conversion
  • Include libxml2 for DASH streaming support
  • Lots of bug fixes

How to work with FFmpegInteropX

We have switched from manual builds to providing NuGet packages. There are two packages:

  • FFmpegInteropX

    • The library itself, referenced by app project files
    • Has a dependency on FFmpegInteropX.FFmpegUWP, which contains the actual FFmpeg build
  • FFmpegInteropX.FFmpegUWP

    • Our official FFmpeg build for the UWP platform
    • Customized and tested for use with FFmpegInteropX
    • Includes FFFmpeg dll files, libs, includes and license files
    • Two purposes:
      • Provide runtime dependencies (dlls) for apps
      • Provide build dependencies for our library

The easiest way to work with FFmpegInteropX is to add both NuGet packages to your app. This allows full usage of all features, without checking out the repo or installing build tools.

Advanced users and library developers: If you want to be able to debug into FFmpegInteropX right from your app, or to work on the library, you need to clone this repository. Instead of adding the FFmpegInteropX NuGet package to your app, you can directly add the FFmpegInterop\FFmpegInterop.vcxproj project file to your app solution (it does not matter where the FFmpegInteropX folder is located). Then in your main app project, add a reference to the FFmpegInterop project. Now you have all the sources directly in your app solution and can debug and enhance the lib.

Full blown: If needed, you can even supply your own custom FFmpeg build to replace our FFmpegInteropX.FFmpegUWP NuGet package.

Check out the build instructions if you want to manually build FFmpgeInteropX or FFmpeg itself.

Using the FFmpegInteropX libraray

Using the FFmpegInteropMSS object is fairly straightforward and can be observed from the sample applications provided.

  1. Get an IRandomAccessStream for the media you want to playback.
  2. Create a new FFmpegInteropMSS object using FFmpegInteropMSS.CreateFromStreamAsync() passing it the stream and optionally a config class instance.
  3. Get the MediaPlaybackItem from the Interop object by invoking CreateMediaPlaybackItem()
  4. Assign the MediaPlaybackItem to your MediaPlayer or MediaElement for playback.

Important: Store the FFmpegInteropMSS instance e.g. in a local field, as long as playback is running. If the object is collected by the GC during playback, playback will stop with an error.

Use FFmepgInteropMSS.CreateFromUriAsync() to create a MediaStreamSource on a streaming source (shoutcast for example).

You can use FFmpegInteropMSS.GetMediaStreamSource() to get the MediaStreamSource like in the original version of the library. But when using MediaStreamSource, you won't get subtitles. Subtitle support requires using the MediaPlaybackItem!

You can add a call to FFmpegVersionInfo.CheckRecommendedVersion() in your app startup code. This will raise an exception if you are using the lib with a version lower than the recommended version. This can help remind you to update ffmpeg after you updated FFmpegInterop.

Call FrameGrabber.CreateFromStreamAsync() to grab one or more frames from a video file.

Subtitle Support

FFmpegInterop will automatically load and use all embedded subtitles, supporting all formats through ffmpeg. You have to use the MediaPlaybackItem returned from the MSS object. Then subtitles can be selected from MediaElement's transport controls.

You can also add external subtitle files by using FFmpegInteropMSS.AddExternalSubtitleAsync(), even during playback. See the sample apps for reference. All ffmpeg subtitle formats are supported as external files, except for the two-file "sub/idx" (DVD) format.

Some external text subtitle files are stored with ANSI encoding instead of UTF8 (which is required by ffmpeg). FFmpegInterop can do an automatic conversion to UTF8. This is enabled by default in the config class and will use the system's active codepage by default. You can change the behavior by changing AutoCorrectAnsiSubtitles and AnsiSubtitleEncoding parameters in the config class. Codepage 0 is the system's active codepage.

Note: If your app uses multiple windows using CoreApplication.CreateNewView(), then you must create the FFmpegInteropMSS object on the thread of the window where the video is to be shown. Otherwise, subtitles will flicker.

FFmpegUniversal

A branch exists which makes FFmpegInterop compatible with FFmpegUniversal builds. It is a project which merges the individual ffmpeg dlls into one single file. This can make deployment easier. Check FFmpegUniversal for more details.

Credits / major contributors

Many more helped with development, bug reports and suggestions. Thank you all!

Thank you also to the Microsoft team who developed the original library!

Your feedback is appreciated!

Feel free to open issues, pull requests, or join discussions.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].