Что такое Windows.Media.IVideoFrameStatics? - PullRequest
0 голосов
/ 14 апреля 2019

Я пытаюсь внедрить faceTacker в гололинзы. Для этого я использую Hololens Camera Stream , потому что MediaCapture использует CaptureElement из XAML. Моя проблема, когда я реализую видеокадр для FaceTracker, у меня появляется эта ошибка:

System.InvalidCastException: Unable to cast object of type 'System.__ComObject' to type 'Windows.Media.IVideoFrameStatics'.
   at System.StubHelpers.StubHelpers.GetCOMIPFromRCW_WinRT(Object objSrc, IntPtr pCPCMD, IntPtr& ppTarget)
   at Windows.Media.VideoFrame.CreateWithSoftwareBitmap(SoftwareBitmap bitmap)
   at test02.OnFrameSampleAcquired(VideoCaptureSample sample)

И когда я пишу это в Google, у меня появляется результат о Windows Media Player, поэтому я понятия не имею, что это такое и как его решить ...

Вот мой код:

    void OnFrameSampleAcquired(VideoCaptureSample sample)
    {
        if (frameSample == null || frameSample.Length < sample.dataLength)
        {
            frameSample = new byte[sample.dataLength];
        }

        sample.CopyRawImageDataIntoBuffer(frameSample);

        IBuffer ibuffer = null;
        if(frameSample != null)
            ibuffer = frameSample.AsBuffer();
        else
            Debug.Log("frameSample null");

        SoftwareBitmap softwareBitmapFrameSample = new SoftwareBitmap(BitmapPixelFormat.Nv12, this._resolution.width, this._resolution.height);
        softwareBitmapFrameSample.CopyFromBuffer(ibuffer);

        if(softwareBitmapFrameSample == null)
            Debug.Log("Failed to create SoftwareBitmap");
        else
            Debug.Log("SoftwareBitmap success");
        try
        {
            Debug.Log("BEFORE VIDEOfRAME");
            VideoFrame videoFrameSample = VideoFrame.CreateWithSoftwareBitmap(softwareBitmapFrameSample);
        }catch(Exception ex){
            Debug.Log(ex);
        }/*
        UnityEngine.WSA.Application.InvokeOnAppThread(() =>
        {
//                faces = await this.faceTracker.ProcessNextFrameAsync();
        }, false);*/
}

Спасибо за помощь

...