Xamarin.Forms.VideoPlayer Capture - PullRequest
       16

Xamarin.Forms.VideoPlayer Capture

0 голосов
/ 18 ноября 2018

Я хочу получить снимок экрана во время воспроизведения видео.

Xamarin.Forms.VideoPlayer не предоставил метод захвата.

Поэтому я использую DependencyService для вызова моего метода захвата ios ниже

public class ScreenshotService : IScreenshotService
{

    public byte[] Capture(VideoPlayer videoPlayer)
    {
        var capture = UIScreen.MainScreen.Capture();

        using (NSData data = capture.AsJPEG())
        {
            var bytes = new byte[data.Length];
            Marshal.Copy(data.Bytes, bytes, 0, Convert.ToInt32(data.Length));
            return bytes;
        }
    }
}

Тогда:

var img = ImageSource.FromStream(() => new MemoryStream(screenshotData));

На изображении мой видеоплеер представляет собой черную область.

Есть ли какое-либо решение, которое я могу сделать?

1 Ответ

0 голосов
/ 19 ноября 2018

Решение:

В соответствии с Definition функции:

вы можете использовать OpenTK.Platform.iPhoneOS.iPhoneOSGameView.Capture() для захвата видеоконтента.

 // Summary:
    //     Captures a screenshot of the entire screen.
    //
    // Returns:
    //     A screenshot as a UIKit.UIImage.
    //
    // Remarks:
    //     This API will only capture UIKit and Quartz drawing, because it uses the screen's
    //     CALayer's RenderInContext method to perform the screenshot. It will not capture
    //     OpenGL ES or video content.
    //     If you want to capture an OpenGL ES or video content use the OpenTK.Platform.iPhoneOS.iPhoneOSGameView.Capture()
    //     method.
    public UIImage Capture();
...