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