Jak przechwycić bieżącą ramkę z MediaElement w WinRT (8.1)?

Próbuję zaimplementować funkcję zrzutów ekranu w aplikacji WinRT, która pokazuje wideo za pośrednictwem MediaElement. Mam następujący kod, zapisuje zrzut ekranu, który jest wielkości MediaElement, ale obraz jest pusty (całkowicie czarny). Wypróbowano różne typy plików multimedialnych. Jeśli wykonam Win Key + Vol Down na Surface RT, zrzut ekranu zawiera zawartość ramki Media, ale jeśli użyję następującego kodu, to jest to czerń wokół :(

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();
 }
}

Tutaj MultimediaItem to moja klasa View Model, która między innymi ma właściwość UniqueId, która jest ciągiem znaków.

„Player” to nazwa elementu multimedialnego.

Czy jest coś nie tak z kodem lub to podejście jest błędne i muszę dostać się do okopów w C ++?

P.S. Interesuje mnie tylko WinRT API.

Aktualizacja 1 Wygląda na to, że RenderTargetBitmap nie obsługuje tego, dokumentacja MSDN to wyjaśniahttp://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.media.imaging.rendertargetbitmap . Doceniam wszelkie wskazówki, jak to zrobić za pomocą DirectX C ++. Jest to dla mnie duże zadanie, więc złamię to w ten czy inny sposób i przedstawię raport z rozwiązaniem.

questionAnswers(2)

yourAnswerToTheQuestion