private void Page_OnLoaded(object sender, RoutedEventArgs e) { var mediaPlayer = new MediaPlayer(); // We use a helper class that logs all the events for the MediaPlayer: mediaPlayerLogger = new MediaPlayerLogger(LoggerControl, mediaPlayer); // In addition to logging, we use the callbacks to update some UI elements in this scenario: RegisterForDiscreteControls(mediaPlayer); RegisterForPositionUpdateControls(mediaPlayer); // Ensure we have PlayReady support, in case the user enters a DASH/PR Uri in the text box. var prHelper = new PlayReadyHelper(LoggerControl); prHelper.SetUpProtectionManager(mediaPlayer); mediaPlayerElement.SetMediaPlayer(mediaPlayer); ContentSelectorControl.Initialize( mediaPlayer, MainPage.ContentManagementSystemStub.Where(m => !m.Aes && m.Live), null, LoggerControl, LoadSourceFromUriAsync); // Initialize scenario specific layout: ContentSelectorControl.SetAutoPlay(true); mediaPlayerElement.AreTransportControlsEnabled = false; LoggerControl.Height = 200; }
private void Page_OnLoaded(object sender, RoutedEventArgs e) { // Explicitly create the instance of MediaPlayer if you need to register for its events // (like MediaOpened / MediaFailed) prior to setting an IMediaPlaybackSource. var mediaPlayer = new MediaPlayer(); // We use a helper class that logs all the events for the MediaPlayer: mediaPlayerLogger = new MediaPlayerLogger(LoggerControl, mediaPlayer); // Ensure we have PlayReady support, in case the user enters a DASH/PR Uri in the text box. var prHelper = new PlayReadyHelper(LoggerControl); prHelper.SetUpProtectionManager(mediaPlayer); mediaPlayerElement.SetMediaPlayer(mediaPlayer); // This Scenario focuses on event handling, mostly via the "Logger" helper classes // in the Shared folder. // // In addition, the App can also insert an IHttpFilter into the Windows.Web.Http stack // which is used by the AdaptiveMediaSource. To do so, it must derive a class from // IHttpFilter, provide the HttpBaseProtocolFilter to that class to execute requests, // then use the derived filter as the constructor for the HttpClient. // // The HttpClient is then used in the constructor of the AdaptiveMediaSource. // The App should explicitly set: // CacheControl.WriteBehavior = HttpCacheWriteBehavior.NoCache // When passing an HttpClient into the constructor of AdpativeMediaSource, // set this on the HttpBaseProtocolFilter. // // More than one IHttpFilter can be nested, for example, an App might // use a filter to modify web requests: see Scenario3 for details. // // In this scenario, we add an AdaptiveMediaSourceHttpFilterLogger to provide additional // verbose logging details for each request. var baseProtocolFilter = new HttpBaseProtocolFilter(); baseProtocolFilter.CacheControl.WriteBehavior = HttpCacheWriteBehavior.NoCache; // Always set WriteBehavior = NoCache var fistLevelFilter = new AdaptiveMediaSourceHttpFilterLogger(LoggerControl, baseProtocolFilter); var httpClient = new HttpClient(fistLevelFilter); ContentSelectorControl.Initialize( mediaPlayer, MainPage.ContentManagementSystemStub.Where(m => !m.Aes), httpClient, LoggerControl, LoadSourceFromUriAsync); }
private void Page_OnLoaded() { // NOTE: Change this to 110 to see DASH with PlayReady scenario const int contentIdForCMS = 1; AdaptiveContentModel adaptiveContentModel = MainPage.FindContentById(contentIdForCMS); if (adaptiveContentModel.PlayReady) { // For PlayReady, we need to create and setup MediaPlayer.MediaProtectionManager // All scenarios use a helper class to do this, see Helpers\PlayReadyHelper.cs var mp = new MediaPlayer(); var prHelper = new PlayReadyHelper(); // From SDKTemplate.Helpers.PlayReadyHelper prHelper.SetUpProtectionManager(mp); mediaPlayerElement.SetMediaPlayer(mp); } mediaPlayerElement.Source = MediaSource.CreateFromUri(adaptiveContentModel.ManifestUri); }
private void Page_OnLoaded(object sender, RoutedEventArgs e) { var mediaPlayer = new MediaPlayer(); // We use a helper class that logs all the events for the MediaPlayer: mediaPlayerLogger = new MediaPlayerLogger(LoggerControl, mediaPlayer); // Ensure we have PlayReady support, in case the user enters a DASH/PR Uri in the text box. var prHelper = new PlayReadyHelper(LoggerControl); prHelper.SetUpProtectionManager(mediaPlayer); mediaPlayerElement.SetMediaPlayer(mediaPlayer); ContentSelectorControl.Initialize( mediaPlayer, MainPage.ContentManagementSystemStub.Where(m => !m.Aes), null, LoggerControl, LoadSourceFromUriAsync); }
private async void Page_OnLoaded() { // Explicitly create the instance of MediaPlayer if you need to register for its events // (like MediaOpened / MediaFailed) prior to setting an IMediaPlaybackSource. var mediaPlayer = new MediaPlayer(); RegisterForMediaPlayerEvents(mediaPlayer); // Ensure we have PlayReady support, if the user enters a DASH/PR Uri in the text box: var prHelper = new PlayReadyHelper(LoggerControl); prHelper.SetUpProtectionManager(mediaPlayer); mediaPlayerElement.SetMediaPlayer(mediaPlayer); AdaptiveContentModel adaptiveContentModel = MainPage.FindContentById(1); UriBox.Text = adaptiveContentModel.ManifestUri.ToString(); LoadSourceFromUriTask = LoadSourceFromUriAsync(adaptiveContentModel.ManifestUri); await LoadSourceFromUriTask; }
private async void Page_OnLoaded() { var mediaPlayer = new MediaPlayer(); RegisterForMediaPlayerEvents(mediaPlayer); // Ensure we have PlayReady support, in case the user enters a DASH/PR Uri in the text box. var prHelper = new PlayReadyHelper(LoggerControl); prHelper.SetUpProtectionManager(mediaPlayer); mediaPlayerElement.SetMediaPlayer(mediaPlayer); // Choose a default content. SelectedContent.ItemsSource = MainPage.ContentManagementSystemStub; adaptiveContentModel = MainPage.FindContentById(1); SelectedContent.SelectedItem = adaptiveContentModel; UriBox.Text = adaptiveContentModel.ManifestUri.ToString(); await LoadSourceFromUriAsync(adaptiveContentModel.ManifestUri); }
private void Page_OnLoaded(object sender, RoutedEventArgs e) { var mediaPlayer = new MediaPlayer(); // We use a helper class that logs all the events for the MediaPlayer: mediaPlayerLogger = new MediaPlayerLogger(LoggerControl, mediaPlayer); // Ensure we have PlayReady support, if the user enters a DASH/PR Uri in the text box: var prHelper = new PlayReadyHelper(LoggerControl); prHelper.SetUpProtectionManager(mediaPlayer); mediaPlayerElement.SetMediaPlayer(mediaPlayer); ContentSelectorControl.Initialize( mediaPlayer, MainPage.ContentManagementSystemStub.Where(m => !m.Aes), null, LoggerControl, LoadSourceFromUriAsync); // There is no InboundBitsPerSecondChanged event, so we start a polling thread to update UI. PollForInboundBitsPerSecond(ctsForInboundBitsPerSecondUiRefresh); }
private async void Page_OnLoaded(object sender, RoutedEventArgs e) { var mediaPlayer = new MediaPlayer(); RegisterForMediaPlayerEvents(mediaPlayer); // Ensure we have PlayReady support, if the user enters a DASH/PR Uri in the text box: var prHelper = new PlayReadyHelper(LoggerControl); prHelper.SetUpProtectionManager(mediaPlayer); mediaPlayerElement.SetMediaPlayer(mediaPlayer); // Choose a default content. SelectedContent.ItemsSource = MainPage.ContentManagementSystemStub.ToArray(); adaptiveContentModel = MainPage.FindContentById(10); SelectedContent.SelectedItem = adaptiveContentModel; UriBox.Text = adaptiveContentModel.ManifestUri.ToString(); await LoadSourceFromUriAsync(adaptiveContentModel.ManifestUri); // There is no InboundBitsPerSecondChanged event, so we start a polling thread to update UI. PollForInboundBitsPerSecond(ctsForInboundBitsPerSecondUiRefresh); }