public async void SetLocalContent(Thumbnail content) { try { var stream = await content.CacheFile.OpenAsync(FileAccessMode.Read); LocalMoviePlayer.SetSource(stream, content.CacheFile.ContentType); var data = new MoviePlaybackData(); data.FileName = content.CacheFile.Name; data.CurrentPosition = TimeSpan.FromMilliseconds(0); data.SeekAvailable = LocalMoviePlayer.CanSeek; DataContext = data; LocalMoviePlayer.Play(); LocalMoviePositionTimer.Start(); if (!DetailInfoDisplayed) { StartToShowInfo(); } InfoTimer.Start(); } catch (Exception ex) { if (LocalMediaFailed != null) { LocalMediaFailed(this, ex.Message); } } }
public static async Task SeekMovieStreamingAsync(AvContentApiClient av, MoviePlaybackData status, TimeSpan seekTarget) { var originalStatus = status.StreamingStatus; if (status.StreamingStatus == StreamStatus.Error || status.StreamingStatus == StreamStatus.Invalid) { return; } if (status.StreamingStatus == StreamStatus.Started) { await PauseMovieStreamingAsync(av, status).ConfigureAwait(false); } await av.SeekStreamingPositionAsync(new PlaybackPosition() { PositionMSec = (int)seekTarget.TotalMilliseconds }).ConfigureAwait(false); if (originalStatus == StreamStatus.Started || originalStatus == StreamStatus.PausedByEdge) { await StartMovieStreamingASync(av, status).ConfigureAwait(false); } }
public static async Task StartMovieStreamingASync(AvContentApiClient av, MoviePlaybackData status) { await av.StartStreamingAsync().ConfigureAwait(false); }