private IEnumerator InitVideoPlayer() { // Initialize the video player bool isMetalRendering = (VuforiaRenderer.Instance.GetRendererAPI() == VuforiaRenderer.RendererAPI.METAL); if (mVideoPlayer.Init(isMetalRendering)) { yield return(new WaitForEndOfFrame()); // Wait in case other videos are loading at the same time while (sLoadingLocked) { yield return(new WaitForSeconds(0.5f)); } // Now we can proceed to load the video StartCoroutine(LoadVideo()); } else { Debug.Log("Could not initialize video player"); HandleStateChange(VideoPlayerHelper.MediaState.ERROR); this.enabled = false; } }
// Start is called before the first frame update void Start() { // 添加监听 inputField.onEndEdit.AddListener(TextFieldOnEndEdit); prepareBtn.onClick.AddListener(Prepare); playBtn.onClick.AddListener(Play); pauseBtn.onClick.AddListener(Pause); stopBtn.onClick.AddListener(Stop); clearBtn.onClick.AddListener(ClearLog); progressSlider.minValue = 0.0f; progressSlider.value = 0.0f; progressSlider.GetComponent <SliderDrag>().EndDrag = progressSliderValueDidChange; volumeSlider.minValue = 0.0f; volumeSlider.maxValue = 1.0f; volumeSlider.value = 1.0f; volumeSlider.GetComponent <SliderDrag>().EndDrag = volumeSliderValueDidChange; float width = displayLayer.rectTransform.rect.width; float height = displayLayer.rectTransform.rect.height; mVideoTexture = new Texture2D((int)width, (int)height, TextureFormat.RGB565, false); mVideoTexture.filterMode = FilterMode.Bilinear; mVideoTexture.wrapMode = TextureWrapMode.Clamp; displayLayer.texture = mVideoTexture; //// 初始化播放器 mVideoPlayer = gameObject.AddComponent <VideoPlayerHelper>(); mVideoPlayer.Init(); // 注意纹理的获取时机,mVideoTexture被负载到gameobject才能获取到texturePtr texPtr = mVideoTexture.GetNativeTexturePtr(); mVideoPlayer.SetVideoTexturePtr(texPtr); HandleStateChange(VideoPlayerHelper.MediaState.NOT_READY); mCurrentState = VideoPlayerHelper.MediaState.NOT_READY; }
void OnRenderObject() { if (mAppPaused) { return; } if (!mIsInited) { Debug.Log("Initialising the video"); // Initialize the video player if (mVideoPlayer.Init() == false) { Debug.Log("Could not initialize video player"); HandleStateChange(VideoPlayerHelper.MediaState.ERROR); this.enabled = false; return; } // Initialize the video texture InitVideoTexture(); // Load the video if (!isCloudReco && mVideoPlayer.Load(m_path, mMediaType, false, 0) == false) { Debug.Log("Could not load video '" + m_path + "' for media type " + mMediaType); HandleStateChange(VideoPlayerHelper.MediaState.ERROR); this.enabled = false; return; } // Successfully initialized mIsInited = true; } else if (!mIsPrepared) { // Get the video player status VideoPlayerHelper.MediaState state = mVideoPlayer.GetStatus(); if (state == VideoPlayerHelper.MediaState.ERROR) { Debug.Log("Could not load video '" + m_path + "' for media type " + mMediaType); HandleStateChange(VideoPlayerHelper.MediaState.ERROR); this.enabled = false; } else if (state < VideoPlayerHelper.MediaState.NOT_READY) { // Video player is ready // Can we play this video on a texture? isPlayableOnTexture = mVideoPlayer.IsPlayableOnTexture(); if (isPlayableOnTexture) { //Set texture and aspect ratio SetVideoTextureAndAspectRatio(); // Seek ahead if necessary if (mSeekPosition > 0) { mVideoPlayer.SeekTo(mSeekPosition); } } else { // Handle the state change state = mVideoPlayer.GetStatus(); HandleStateChange(state); mCurrentState = state; } // Scale the icon ScaleIcon(); // Video is prepared, ready for playback mIsPrepared = true; } } else { if (isPlayableOnTexture) { // Update the video texture with the latest video frame VideoPlayerHelper.MediaState state = mVideoPlayer.UpdateVideoData(); if ((state == VideoPlayerHelper.MediaState.PLAYING) || (state == VideoPlayerHelper.MediaState.PLAYING_FULLSCREEN)) { GL.InvalidateState(); } // Check for playback state change if (state != mCurrentState) { HandleStateChange(state); mCurrentState = state; } } else { // Get the current status VideoPlayerHelper.MediaState state = mVideoPlayer.GetStatus(); if ((state == VideoPlayerHelper.MediaState.PLAYING) || (state == VideoPlayerHelper.MediaState.PLAYING_FULLSCREEN)) { GL.InvalidateState(); } // Check for playback state change if (state != mCurrentState) { HandleStateChange(state); mCurrentState = state; } } } CheckIconPlaneVisibility(); }
void OnRenderObject() { if (mAppPaused) { return; } if (!mIsInited) { // Initialize the video player if (mVideoPlayer.Init() == false) { Debug.Log("Could not initialize video player"); HandleStateChange(VideoPlayerHelper.MediaState.ERROR); this.enabled = false; return; } // Initialize the video texture InitVideoTexture(); // Load the video if (mVideoPlayer.Load(m_path, mMediaType, false, 0) == false) { Debug.Log("Could not load video '" + m_path + "' for media type " + mMediaType); HandleStateChange(VideoPlayerHelper.MediaState.ERROR); this.enabled = false; return; } // Successfully initialized mIsInited = true; } else if (!mIsPrepared) { // Get the video player status VideoPlayerHelper.MediaState state = mVideoPlayer.GetStatus(); if (state == VideoPlayerHelper.MediaState.ERROR) { Debug.Log("Could not load video '" + m_path + "' for media type " + mMediaType); HandleStateChange(VideoPlayerHelper.MediaState.ERROR); this.enabled = false; } else if (state < VideoPlayerHelper.MediaState.NOT_READY) { // Video player is ready // Can we play this video on a texture? isPlayableOnTexture = mVideoPlayer.IsPlayableOnTexture(); if (isPlayableOnTexture) { // Pass the video texture id to the video player int nativeTextureID = mVideoTexture.GetNativeTextureID(); mVideoPlayer.SetVideoTextureID(nativeTextureID); // Get the video width and height int videoWidth = mVideoPlayer.GetVideoWidth(); int videoHeight = mVideoPlayer.GetVideoHeight(); if (videoWidth > 0 && videoHeight > 0) { // Scale the video plane to match the video aspect ratio float aspect = videoHeight / (float)videoWidth; // Flip the plane as the video texture is mirrored on the horizontal transform.localScale = new Vector3(-0.1f, 0.1f, 0.1f * aspect); } // Seek ahead if necessary if (mSeekPosition > 0) { mVideoPlayer.SeekTo(mSeekPosition); } } else { // Handle the state change state = mVideoPlayer.GetStatus(); HandleStateChange(state); mCurrentState = state; } // Scale the icon ScaleIcon(); // Video is prepared, ready for playback mIsPrepared = true; } } else { if (isPlayableOnTexture) { // Update the video texture with the latest video frame VideoPlayerHelper.MediaState state = mVideoPlayer.UpdateVideoData(); if ((state == VideoPlayerHelper.MediaState.PLAYING) || (state == VideoPlayerHelper.MediaState.PLAYING_FULLSCREEN)) { GL.InvalidateState(); } // Check for playback state change if (state != mCurrentState) { HandleStateChange(state); mCurrentState = state; } } else { // Get the current status VideoPlayerHelper.MediaState state = mVideoPlayer.GetStatus(); if ((state == VideoPlayerHelper.MediaState.PLAYING) || (state == VideoPlayerHelper.MediaState.PLAYING_FULLSCREEN)) { GL.InvalidateState(); } // Check for playback state change if (state != mCurrentState) { HandleStateChange(state); mCurrentState = state; } } } CheckIconPlaneVisibility(); }