/// <summary> /// Initialize the Media Player for the Editor /// </summary> /// <param name="localMediaPlayerID">ID of the media player</param> /// <param name="videoEndedCallback">Callback when video ends</param> /// <param name="startPreparedCallback">Callback when media player is created</param> /// <param name="seekCompletedCallback">Callback when a seek completes</param> public void Initialize(int localMediaPlayerID, MediaPlayerEndDelegate videoEndedCallback, MediaPlayerStartDelegate startPreparedCallback, MediaPlayerEndDelegate seekCompletedCallback) { this.mediaPlayerID = localMediaPlayerID; this.startPrepared = startPreparedCallback; this.seekCompleted = seekCompletedCallback; this.videoEnded = videoEndedCallback; }
/// <summary> /// Creates the streaming media player for the editor /// </summary> /// <param name="mediaPlayerGO">The media player game object</param> /// <param name="source">URL of the media</param> /// <param name="localMediaPlayerID">ID of the media player</param> /// <returns> /// <c>MLResult.Result</c> will be <c>MLResult.Code.Ok</c> /// </returns> public MLResult CreateStreamingMediaPlayer(GameObject mediaPlayerGO, string source, int localMediaPlayerID) { this.videoPlayer = mediaPlayerGO.AddComponent <VideoPlayer>(); //// Add AudioSource this.audioSource = mediaPlayerGO.AddComponent <AudioSource>(); // Create a Url with provided string and test if its a local file Uri uri; bool result = Uri.TryCreate(source, UriKind.Absolute, out uri); string path = result ? source : Path.Combine(Application.streamingAssetsPath, source); this.videoPlayer.url = path; this.videoPlayer.playOnAwake = true; this.videoPlayer.waitForFirstFrame = true; // Setup and attch audio source this.audioSource.playOnAwake = false; this.SetVolume(30, localMediaPlayerID); this.videoPlayer.audioOutputMode = VideoAudioOutputMode.AudioSource; this.videoPlayer.EnableAudioTrack(0, true); this.videoPlayer.SetTargetAudioSource(0, this.audioSource); this.videoPlayer.prepareCompleted += this.HandlePrepareCompleted; this.videoPlayer.seekCompleted += this.HandleSeekCompleted; this.videoPlayer.loopPointReached += this.HandleVideoEnded; return(MLResult.Create(MLResult.Code.Ok)); }
/// <summary> /// OnDestroy callback is used to unsubscribe to all the events. /// </summary> private void OnDestroy() { if (this.videoPlayer) { this.videoPlayer.prepareCompleted -= this.HandlePrepareCompleted; this.videoPlayer.seekCompleted -= this.HandleSeekCompleted; this.videoPlayer.loopPointReached -= this.HandleVideoEnded; } }