コード例 #1
0
 private void PreparePostRolls()
 {
     PostRoll = null;
     if (player.ActiveMediaPlugin != null && player.ActiveMediaPlugin.Duration != TimeSpan.Zero)
     {
         var duration = player.ActiveMediaPlugin.Duration;
         // save this for the MediaEnded event
         var scheduledPostRoll = ScheduledAds.FirstOrDefault(a => ((PackageAdTrigger)a.Trigger).StartTime == duration);
         if (scheduledPostRoll != null)
         {
             CleanupScheduledAd(scheduledPostRoll);
             PostRoll = scheduledPostRoll.Trigger as PackageAdTrigger;
             player.ActiveMediaPlugin.MediaEnded += ActiveMediaPlugin_MediaEnded;
         }
     }
 }
コード例 #2
0
        void player_ContentChanged(object sender, EventArgs e)
        {
            pendingMediaSource = null;
            PlayWhenReady = false;
            PostRoll = null;
            adSchedule = null;
            CleanupScheduledAds();
            if (player.ActiveMediaPlugin != null)
            {
                Status = SchedulingStatus.Downloading;
                // block the player from starting. We need to get a video manifest first in case there is a preroll.
                BlockPlayback();

                System.Windows.Deployment.Current.Dispatcher.BeginInvoke(() =>
                {
                    object adData = null;
            // Disable warning on using freewheel and microsoft keys
            #pragma warning disable 618
                    if (player.ContentMetadata.ContainsKey(Key_FreeWheelUrl))
                    {
                        adData = player.ContentMetadata[Key_FreeWheelUrl];
                    }
                    if (player.ContentMetadata.ContainsKey(Key_MicrosoftUrl))
                    {
                        adData = player.ContentMetadata[Key_MicrosoftUrl];
                    }
            #pragma warning restore 618

                    if (player.ContentMetadata.ContainsKey(Key_AdUrl))
                    {
                        adData = player.ContentMetadata[Key_AdUrl];
                    }
                    if (adData != null)
                    {
                        if (adData is String || adData is Stream)
                        {
                            try
                            {
                                if (adData is String)
                                {
                                    string uri = adData as String;
                                    if (Uri.IsWellFormedUriString(uri, UriKind.RelativeOrAbsolute) == false)
                                    {
                                        uri = Uri.EscapeUriString(uri);
                                    }
                                    AdManager.GetSchedule(uri, ScheduleDownloadedHandler);
                                }
                                else if (adData is Stream)
                                {
                                    AdManager.GetSchedule(adData as Stream, ScheduleDownloadedHandler);
                                }
                            }
                            catch (Exception ex)
                            {
                                HandleManifestDownloadFailed(ex);
                            }
                        }
                        else
                        {
                            SendLogEntry("UAC Metadata type is not supported", Microsoft.SilverlightMediaFramework.Plugins.Primitives.LogLevel.Information, "Skipping UAC ad scheduling");
                        }
                    }
                    else
                    {

                        if (AutoPlay || PlayWhenReady)
                            ReleasePlayback();
                        Status = SchedulingStatus.Failed;

                        SendLogEntry("UAC Metadata not found", Microsoft.SilverlightMediaFramework.Plugins.Primitives.LogLevel.Information, "Skipping UAC ad scheduling");
                        return;
                    }
                });
            }
            else
            {
                Status = SchedulingStatus.Disabled;
            }
        }
コード例 #3
0
 void PlayPostRoll()
 {
     if (PostRoll != null)
     {
         // play postroll
         var scheduledAd = player.ScheduleAdTrigger(PostRoll, null);
         ScheduledAds.Add(scheduledAd);
         scheduledAd.Deactivated += scheduledAd_Deactivated;
         PostRoll = null;
     }
 }
コード例 #4
0
 void IPlugin.Unload()
 {
     try
     {
         // clean up all scheduled ads
         CleanupScheduledAds();
         PostRoll = null;
         ScheduledAds = null;
         // disconnect the player
         if (player != null)
         {
             player.ContentChanged -= new EventHandler(player_ContentChanged);
             player = null;
         }
         isLoaded = false;
         if (PluginUnloaded != null) PluginUnloaded(this);
     }
     catch (Exception ex)
     {
         if (PluginUnloadFailed != null) PluginUnloadFailed(this, ex);
     }
 }