private RenderTexture setupRenderTexture(RenderTexture rt = null, enVideoPlayMode mode = enVideoPlayMode.CG) { int width = mode == enVideoPlayMode.CG ? AppConst.VideoConfig.CGVideoWidth : AppConst.VideoConfig.UIVideoWidth; int height = mode == enVideoPlayMode.CG ? AppConst.VideoConfig.CGVideoHeight : AppConst.VideoConfig.UIVideoHeight; RenderTexture currentRenderTexture = rt; if (rt == null || rt.width != width || rt.height != height) { if (rt != null) { RenderTexture.ReleaseTemporary(rt); } currentRenderTexture = RenderTexture.GetTemporary(width, height, 0, RenderTextureFormat.RGB565); currentRenderTexture.name = "VideoPlayerRenterTexture" + currentRenderTexture.GetHashCode(); currentRenderTexture.autoGenerateMips = false; } return(currentRenderTexture); }
public void PlayVideo(string videoUrl, RawImage image, Action onStart, Action onEnd, bool isLoop = false, bool isPause = false, bool isStopOnClick = false, enVideoPlayMode mode = enVideoPlayMode.CG) { if (videoPlayer == null) { return; } renderTexture = setupRenderTexture(renderTexture, mode); if (videoPlayer.isPlaying) { StopVideo(); } if (image == null) { if (!videoObject.activeSelf) { videoObject.SetActive(true); } videoRawImage.texture = renderTexture; SetVideoAspect(videoRawImage); } else { if (videoObject != null && videoObject.activeSelf) { videoObject.SetActive(false); } if (videoRawImage != null) { videoRawImage.texture = null; } image.texture = renderTexture; SetVideoAspect(image); } videoStatrPlayCallback = OnStart; videoEndCallback = onEnd; stopOnClick = isStopOnClick; isPauseOnFirstFrame = isPause; videoPlayer.url = videoUrl; videoPlayer.isLooping = isLoop; audioSource.volume = 1f; videoPlayer.targetTexture = renderTexture; }