Wie erfasst man ein aktuelles Bild von einem MediaElement in WinRT (8.1)?

Ich versuche, eine Screenshot-Funktionalität in einer WinRT-App zu implementieren, die Video über ein MediaElement anzeigt. Ich habe den folgenden Code, es speichert einen Screenshot, der die Größe des MediaElement hat, aber das Bild ist leer (vollständig schwarz). Versucht mit verschiedenen Arten von Mediendateien. Wenn ich auf Surface RT eine Win-Taste + Vol Down drücke, enthält der Screenshot den Inhalt des Media-Frames. Wenn ich jedoch den folgenden Code verwende, ist alles schwarz :(

private async Task SaveCurrentFrame()
{
 RenderTargetBitmap renderTargetBitmap = new RenderTargetBitmap();
 await renderTargetBitmap.RenderAsync(Player);
 var pixelBuffer = await renderTargetBitmap.GetPixelsAsync();
 MultimediaItem currentItem = (MultimediaItem)this.DefaultViewModel["Group"];
 StorageFolder currentFolder = Windows.Storage.ApplicationData.Current.LocalFolder;
 var saveFile = await currentFolder.CreateFileAsync(currentItem.UniqueId + ".png", CreationCollisionOption.ReplaceExisting);
 if (saveFile == null)
    return;
 // Encode the image to the selected file on disk
 using (var fileStream = await saveFile.OpenAsync(FileAccessMode.ReadWrite))
 {
    var encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.PngEncoderId, fileStream);

    encoder.SetPixelData(
        BitmapPixelFormat.Bgra8,
        BitmapAlphaMode.Ignore,
        (uint)renderTargetBitmap.PixelWidth,
        (uint)renderTargetBitmap.PixelHeight,
        DisplayInformation.GetForCurrentView().LogicalDpi,
        DisplayInformation.GetForCurrentView().LogicalDpi,
        pixelBuffer.ToArray());

    await encoder.FlushAsync();
 }
}

Hier ist MultimediaItem meine View Model-Klasse, die unter anderem eine UniqueId-Eigenschaft hat, die eine Zeichenfolge ist.

"Player" ist der Name des Medienelements.

Stimmt etwas mit dem Code nicht oder stimmt dieser Ansatz nicht und ich muss mit C ++ in die Schranken greifen?

P.S. Ich interessiere mich nur für die WinRT-API.

Update 1 Es sieht so aus, als ob RenderTargetBitmap dies nicht unterstützt. Die MSDN-Dokumentation verdeutlicht dieshttp://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.media.imaging.rendertargetbitmap . Ich freue mich über Hinweise zur Verwendung von DirectX C ++. Dies ist eine große Aufgabe für mich, daher werde ich auf die eine oder andere Weise aufbrechen und über die Lösung berichten.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage