Extension for Transcoder app for Windows
Build an app that extends the Transcoder app, adding additional source and target formats. An example Transcoder extension, Animated GIF Creator with full source code is here and is in the Windows Store. You can use the Transcoder.Extension class in your project to help in the implementation of a Transcoder Extension:
public sealed class GifCreator : IBackgroundTask
{
public async void Run(IBackgroundTaskInstance taskInstance)
{
var deferral = taskInstance.GetDeferral();
var logoFile = await Package.Current.InstalledLocation.GetFileAsync("Assets\\Logo.png");
var extension = new Transcoder.Extension
{
Price = await Transcoder.Extension.GetPriceAsync(),
SourceType = "Video",
SourceFormats = new string[] { ".mp4", ".mov", ".wmv", ".avi" },
DestinationFormats = new string[] { ".gif" },
LogoFile = logoFile,
TranscodeAsync = this.TranscodeGifAsync
};
extension.Run(taskInstance, deferral);
}
public IAsyncAction TranscodeGifAsync(StorageFile source, StorageFile destination, ValueSet arguments)
{
return AsyncInfo.Run(async delegate (CancellationToken token)
{
... todo: write transcoding here
});
}
}
Create a Windows Universal App that exposes an application service. Read this article on MSDN on how to create and consume an app service. To work in Transcoder, the app service needs to follow a specific protocol, responding to messages that have "Command" properties:
Gets the description of the app service
Property | Type | Description |
---|---|---|
Command | String | "GetDescription" |
Property | Type | Description |
---|---|---|
DisplayName | String | the localized display name of the hosting application |
PublisherName | String | the localized publisher name of the hosting application |
Version | String | the version of the hosting application in the store |
Price | String | the localized price of the hosting application in the store or "0" for free apps |
LogoFileToken | String | the token for a square .png image at 50x50 px minimum size created by using the SharedStorageAccessManager.AddFile API |
SourceType | String | "Audio" or "Video" |
Get the source formats that the app service supports
Property | Type | Description |
---|---|---|
Command | String | "GetSourceFormats" |
Property | Type | Description |
---|---|---|
Formats | String | the source formats that the transcoder takes separated by commas (for example ".wmv,.avi,.mp4") |
Gets the destination formats that the app service supports
Property | Type | Description |
---|---|---|
Command | String | "GetDestinationFormats" |
Property | Type | Description |
---|---|---|
Formats | String | the destination formats that the transcoder takes separated by commas (for example ".wmv,.avi,.mp4") |
Property | Type | Description |
---|---|---|
Command | String | "Transcode" |
FileTokens | String | a JSON array containing JSON objects with SourceToken and DestinationToken string properties. The file tokens are generated by using the SharedStorageAccessManager.AddFile API |
Quality | String | Source, Custom, HD1080p, HD720p, Wvga, Ntsc, Pal, Vga, Qvga |
Width | UInt | (optional) width of destination file if Quality is "Custom" |
Height | UInt | (optional) height of destination file if Quality is "Custom" |
Property | Type | Description |
---|---|---|
Status | String | "OK" if successful, or an error message to show to the user in the case of a problem. |
If you use the Transcoder.Extension class, throwing an exception in your extension will show that message in the exception to the user in a Toast notification from Transcoder.