This sample demonstrates how to use media extensions to apply effects to video, decode video, and create media streams using scheme handlers.
Note This sample was created using one of the universal app templates available in Visual Studio. It shows how its solution is structured so it can run on both Windows 8.1 and Windows Phone 8.1. For more info about how to build apps that target Windows and Windows Phone with Visual Studio, see Build apps that target Windows and Windows Phone 8.1 by using Visual Studio.
Specifically, this sample covers:
-
Installing a local video decoder in the application. Local decoders installed as media extensions can be used to provide support for video formats not natively supported by Windows 8.1. As with all media extensions, the extension is only available to this application and only when the application is running.
-
Installing a local scheme handler. A scheme handler takes a URL as input and allows an application to create a media stream for the playback engine. In this example, the video frames are created by the scheme handler on the fly. It produces a circle, square, or rectangle, determined by the scheme type passed down from the application. Scheme handlers are useful for situations where the source of the media is not a file.
-
Applying a media effect. A media effect allows an application to process uncompressed audio and video streams before it reaches the rendering engine. This example demonstrates how to add the VideoStabilization effect to a video stream for playback.
Important
This sample uses the Media Extension feature of Windows 8.1 to add functionality to the Microsoft Media Foundation pipeline. A Media Extension consists of a hybrid object that implements both Component Object Model (COM) and Windows Runtime interfaces. The COM interfaces interact with the Media Foundation pipeline. The Windows Runtime interfaces activate the component and interact with the Windows Store app.
In most situations, it is recommended that you use Visual C++ with Component Extensions (C++/CX ) to interact with the Windows Runtime. But in the case of hybrid components that implement both COM and Windows Runtime interfaces, such as Media Extensions, this is not possible. C++/CX can only create Windows Runtime objects. So, for hybrid objects it is recommended that you use Windows Runtime C++ Template Library to interact with the Windows Runtime. Be aware that Windows Runtime C++ Template Library has limited support for implementing COM interfaces.
For more info on creating a Media Foundation media extension in Windows Store app, see Walkthrough: Creating a Windows Store app using WRL and Media Foundation.
Important The binaries used by this sample have been included for proof of concept purposes only. They might have significant performance, reliability, and security issues and should not be used outside of a test environment. They are not licensed for use in a production environment or for use with sensitive data.
To obtain an evaluation copy of Windows 8.1, go to Windows 8.1.
To obtain an evaluation copy of Microsoft Visual Studio 2013, go to Visual Studio 2013.
Note For Windows 8 app samples, download the Windows 8 app samples pack. The samples in the Windows 8 app samples pack will build and run only on Microsoft Visual Studio 2012.
Related topics
- Windows 8 app samples
- Creating a Windows Store app using WRL and Media Foundation
- Roadmaps
- Adding multimedia
- Designing UX for apps
- Roadmap for apps using C# and Visual Basic
- Roadmap for apps using C++
- Roadmap for apps using JavaScript
- Reference
- Media Foundation
- MediaExtensionManager
- VideoStabilization
Operating system requirements
| Client | |
|---|---|
| Server | |
| Phone |
Build the sample
- Start Microsoft Visual Studio 2013 Update 2 and select File > Open > Project/Solution.
- Go to the directory to which you unzipped the sample. Then go to the subdirectory named for the sample and double-click the Visual Studio 2013 Update 2 Solution (.sln) file.
- Follow the steps for the version of the sample you want:
-
To build the Windows version of the sample:
- Select MediaExtensions.Windows in Solution Explorer.
- Press Ctrl+Shift+B, or use Build > Build Solution, or use Build > Build MediaExtensions.Windows.
-
To build the Windows Phone version of the sample:
- Select MediaExtensions.WindowsPhone in Solution Explorer.
- Press Ctrl+Shift+B or use Build > Build Solution or use Build > Build MediaExtensions.WindowsPhone.
-
Run the sample
The next steps depend on whether you just want to deploy the sample or you want to both deploy and run it.
Deploying the sample
-
To deploy the built Windows version of the sample:
- Select MediaExtensions.Windows in Solution Explorer.
- Use Build > Deploy Solution or Build > Deploy MediaExtensions.Windows.
-
To deploy the built Windows Phone version of the sample:
- Select MediaExtensions.WindowsPhone in Solution Explorer.
- Use Build > Deploy Solution or Build > Deploy MediaExtensions.WindowsPhone.
Deploying and running the sample
-
To deploy and run the Windows version of the sample:
- Right-click MediaExtensions.Windows in Solution Explorer and select Set as StartUp Project.
- To debug the sample and then run it, press F5 or use Debug > Start Debugging. To run the sample without debugging, press Ctrl+F5 or use Debug > Start Without Debugging.
-
To deploy and run the Windows Phone version of the sample:
- Right-click MediaExtensions.WindowsPhone in Solution Explorer and select Set as StartUp Project.
- To debug the sample and then run it, press F5 or use Debug > Start Debugging. To run the sample without debugging, press Ctrl+F5 or use Debug > Start Without Debugging.