Пример #1
0
    //Screen Share
    IEnumerator cutScreen()
    {
        yield return(new WaitForEndOfFrame());

        //videoBytes = Marshal.AllocHGlobal(Screen.width * Screen.height * 4);
        mTexture.ReadPixels(mRect, 0, 0);
        mTexture.Apply();
        byte[]     bytes = mTexture.GetRawTextureData();
        int        size  = Marshal.SizeOf(bytes[0]) * bytes.Length;
        IRtcEngine rtc   = IRtcEngine.QueryEngine();

        if (rtc != null)
        {
            ExternalVideoFrame externalVideoFrame = new ExternalVideoFrame();
            externalVideoFrame.type       = ExternalVideoFrame.VIDEO_BUFFER_TYPE.VIDEO_BUFFER_RAW_DATA;
            externalVideoFrame.format     = ExternalVideoFrame.VIDEO_PIXEL_FORMAT.VIDEO_PIXEL_BGRA;
            externalVideoFrame.buffer     = bytes;
            externalVideoFrame.stride     = (int)mRect.width;
            externalVideoFrame.height     = (int)mRect.height;
            externalVideoFrame.cropLeft   = 10;
            externalVideoFrame.cropTop    = 10;
            externalVideoFrame.cropRight  = 10;
            externalVideoFrame.cropBottom = 10;
            externalVideoFrame.rotation   = 90;
            externalVideoFrame.timestamp  = i++;
            int a = rtc.PushExternVideoFrame(externalVideoFrame);
            Debug.Log(" pushVideoFrame =       " + a);
        }
    }