예제 #1
0
        public async Task ShowVideo(
            string mediaItemFilePath,
            Guid mediaItemId,
            TimeSpan startOffset,
            bool startFromPaused)
        {
            _mediaItemId   = mediaItemId;
            _startPosition = startOffset;
            _lastPosition  = TimeSpan.Zero;

            if (startFromPaused)
            {
                _mediaElement.Position = _startPosition;
                await _mediaElement.Play();

                OnMediaChangeEvent(new MediaEventArgs {
                    MediaItemId = _mediaItemId, Change = MediaChange.Started
                });
            }
            else
            {
                OnMediaChangeEvent(new MediaEventArgs {
                    MediaItemId = _mediaItemId, Change = MediaChange.Starting
                });
                _mediaElement.Source = new Uri(mediaItemFilePath);
            }
        }
예제 #2
0
        public async Task ShowVideoOrPlayAudio(
            string mediaItemFilePath,
            ScreenPosition screenPosition,
            Guid mediaItemId,
            MediaClassification mediaClassification,
            TimeSpan startOffset,
            bool startFromPaused)
        {
            _mediaItemId       = mediaItemId;
            _mediaItemFilePath = mediaItemFilePath;

            Log.Debug($"ShowVideoOrPlayAudio - Media Id = {_mediaItemId}");

            _mediaClassification = mediaClassification;
            _startPosition       = startOffset;
            _lastPosition        = TimeSpan.Zero;

            ScreenPositionHelper.SetScreenPosition(_mediaElement.FrameworkElement, screenPosition);
            ScreenPositionHelper.SetSubtitleBlockScreenPosition(_subtitleBlock, screenPosition);

            _mediaElement.MediaItemId = mediaItemId;

            if (startFromPaused)
            {
                _mediaElement.Position = _startPosition;
                await _mediaElement.Play(new Uri(mediaItemFilePath), _mediaClassification);

                OnMediaChangeEvent(CreateMediaEventArgs(_mediaItemId, MediaChange.Started));

                await CreateSubtitleProvider(mediaItemFilePath, startOffset);
            }
            else
            {
                Log.Debug($"Firing Started - Media Id = {_mediaItemId}");

                await CreateSubtitleFile(mediaItemFilePath);

                await _mediaElement.Play(new Uri(mediaItemFilePath), _mediaClassification).ConfigureAwait(true);

                OnMediaChangeEvent(CreateMediaEventArgs(_mediaItemId, MediaChange.Starting));
            }
        }
        public void playMedia()
        {
            WriteDebug("method:play " + media.CurrentState);

            // sometimes people forget to call load() first
            if (!_enableMultiCastPlayer && (media.CurrentState == MediaElementState.Closed || (_mediaUrl != "" && media.Source == null)))
            {
                _isAttemptingToPlay = true;
                loadMedia();
            }

            // store and trigger with the state change above
            if (media.CurrentState == MediaElementState.Closed && _isLoading)
            {
                WriteDebug("storing _isAttemptingToPlay ");
                _isAttemptingToPlay = true;
            }
            else
            {
                media.Play();
                _isEnded  = false;
                _isPaused = false;
            }
        }