/// <summary> /// Initializes the SMFLogger and attaches the SMFPlayer to it. /// </summary> /// <param name="player">An instance of SMFPlayer</param> public void SetPlayer(FrameworkElement player) { if (!IsLoaded) { Load(); } SMFPlayer smfPlayer = player as SMFPlayer; if (monitor == null) { var metadata = smfPlayer.GlobalConfigMetadata.FirstOrDefault(item => item.Key == MetaDataItemId); if (metadata != null) { Uri configUri = new Uri(Convert.ToString(metadata.Value), UriKind.Relative); LoadHealthMonitor(configUri); } else { LoadHealthMonitor(); } } monitor.AttachToSMF(smfPlayer); }
protected JavascriptBridge(SMFPlayer player, string scriptableName) { _player = player; _scriptableName = scriptableName; HtmlPage.RegisterScriptableObject(scriptableName, this); _player.TimelineMarkerReached += Player_MarkerReached; _player.AddExternalPluginsCompleted += Player_AddExternalPluginsCompleted; _player.AddExternalPluginsFailed += Player_AddExternalPluginsFailed; _player.PlaybackPositionChanged += Player_PlaybackPositionChanged; _player.PlayStateChanged += Player_PlayStateChanged; _player.PlaySpeedStateChanged += Player_PlaySpeedStateChanged; _player.TimelineMarkerLeft += Player_MarkerLeft; _player.TimelineMarkerSkipped += Player_MarkerSkipped; _player.FullScreenChanged += Player_FullScreenChanged; _player.PlaylistChanged += Player_PlaylistChanged; _player.PlaylistItemChanged += Player_PlaylistItemChanged; _player.MediaFailed += Player_MediaFailed; _player.MediaEnded += Player_MediaEnded; _player.MediaOpened += Player_MediaOpened; _player.VolumeLevelChanged += Player_VolumeLevelChanged; _player.SeekCompleted += Player_SeekCompleted; Application.Current.Exit += Application_Exit; try { HtmlPage.Window.Invoke("onPlayerReady", this); } catch { // ignore this exception, it will happen if the page doesn't have a onPlayerReady function. } }
void smfPlayer_AudioStreamChanged(object sender, CustomEventArgs <Core.Media.StreamMetadata> e) { SMFPlayer smfPlayer = sender as SMFPlayer; var audioLog = new AudioTrackChangedLog(e.Value.Language); healthMonitorLogger.PopulateVideoEventLog(audioLog); audioLog.MediaElementId = ssme.Name; audioLog.IsLive = smfPlayer.IsPositionLive; LoggingService.Current.Log(audioLog); }
internal static JavascriptBridge Initialize(SMFPlayer player, string scriptableName) { JavascriptBridge bridge = null; if (HtmlPage.IsEnabled && !Instances.ContainsKey(scriptableName)) { bridge = new JavascriptBridge(player, scriptableName); Instances.Add(scriptableName, bridge); } return(bridge); }
/// <summary> /// Detaches the SMFPlayer so it no longer monitored. /// </summary> /// <param name="smfPlayer"></param> public void DetachFromSMF(SMFPlayer smfPlayer) { smfPlayer.CaptionsVisibilityChanged -= smfPlayer_CaptionsVisibilityChanged; smfPlayer.AudioStreamChanged -= smfPlayer_AudioStreamChanged; smfPlayer.RetryFailed -= smfPlayer_RetryFailed; smfPlayer.RetrySuccessful -= smfPlayer_RetrySuccessful; smfPlayer.PlayStateChanged -= smfPlayer_PlayStateChanged; smfPlayer.PlaylistItemChanged -= smfPlayer_PlaylistItemChanged; DetachFromMediaElement(); }
void smfPlayer_RetryFailed(object sender, EventArgs e) { SMFPlayer smfPlayer = sender as SMFPlayer; var retryFailedLog = new RetryFailedLog(); healthMonitorLogger.PopulateVideoEventLog(retryFailedLog); retryFailedLog.EdgeIP = healthMonitor.EdgeServer; retryFailedLog.MediaElementId = ssme.Name; retryFailedLog.IsLive = smfPlayer.IsPositionLive; LoggingService.Current.Log(retryFailedLog); }
void smfPlayer_CaptionsVisibilityChanged(object sender, EventArgs e) { SMFPlayer smfPlayer = sender as SMFPlayer; if (CaptionsVisibility != smfPlayer.CaptionsVisibility) { // only log when the state has changed, this weeds out the initial state CaptionsVisibility = smfPlayer.CaptionsVisibility; var ccLog = new ClosedCaptionChangedLog(smfPlayer.CaptionsVisibility == FeatureVisibility.Visible); healthMonitorLogger.PopulateSimpleVideoLog(ccLog); LoggingService.Current.Log(ccLog); } }
/// <summary> /// Provides a mechanism to pass the SMF player to the plugin. /// </summary> /// <param name="player"></param> public void SetPlayer(FrameworkElement player) { smfPlayer = player as SMFPlayer; smfPlayer.PlaylistItemChanged += smfPlayer_PlaylistItemChanged; #if !OOB smfPlayer.FullScreenChanged += smfPlayer_FullScreenChanged; #endif smfPlayer.SizeChanged += smfPlayer_SizeChanged; smfPlayer.PlaybackBitrateChanged += smfPlayer_PlaybackBitrateChanged; smfPlayer.PlayStateChanged += smfPlayer_PlayStateChanged; smfPlayer.MediaPluginRegistered += smfPlayer_MediaPluginRegistered; InitializeAnaglyphSetup(); }
/// <summary> /// Attaches the SMFPlayer so it can be monitored /// </summary> public void AttachToSMF(SMFPlayer smfPlayer) { smfPlayer.LogLevel = LogLevel.Information; CaptionsVisibility = smfPlayer.CaptionsVisibility; smfPlayer.CaptionsVisibilityChanged += smfPlayer_CaptionsVisibilityChanged; smfPlayer.AudioStreamChanged += smfPlayer_AudioStreamChanged; smfPlayer.RetryFailed += smfPlayer_RetryFailed; smfPlayer.RetrySuccessful += smfPlayer_RetrySuccessful; smfPlayer.PlayStateChanged += smfPlayer_PlayStateChanged; smfPlayer.PlaylistItemChanged += smfPlayer_PlaylistItemChanged; #if PROGRAMMATICCOMPOSITION // get a list of logagents from the players generic plugins var logAgents = ((IPlayer)smfPlayer).Plugins.OfType <ILogAgent>().ToList(); // merge the plugins with the existing ones LoggingService.Current.Agents = LoggingService.Current.Agents.Concat(logAgents).Distinct(); #endif }
private void Application_Startup(object sender, StartupEventArgs e) { var player = new SMFPlayer(); if (e.InitParams != null) { if (!e.InitParams.ContainsKeyIgnoreCase(SupportedInitParams.DeliveryMethod)) { e.InitParams.Add(SupportedInitParams.DeliveryMethod, DeliveryMethods.ProgressiveDownload.ToString()); } player.LoadInitParams(e.InitParams); player.PlaylistVisibility = player.Playlist != null && player.Playlist.Count > 1 ? FeatureVisibility.Hidden : FeatureVisibility.Disabled; player.CaptionsVisibility = e.InitParams.ContainsKeyIgnoreCase(SupportedInitParams.SelectedCaptionStream) ? FeatureVisibility.Visible : FeatureVisibility.Disabled; } this.RootVisual = player; }
void smfPlayer_PlayStateChanged(object sender, CustomEventArgs <MediaPluginState> e) { SMFPlayer player = (SMFPlayer)sender; if (e.Value == MediaPluginState.Opening || e.Value == MediaPluginState.Playing) { var cc = FindMediaPresenter(player); if (cc != null) { var mediaElement = cc.Content as SmoothStreamingMediaElement; if (mediaElement != null && mediaElement != ssme) { AttachToMediaElement(mediaElement); } } } else if ((e.Value == MediaPluginState.Stopped) && ssme != null) { if (IsAttached) { DetachFromMediaElement(); } } }
internal static JavascriptBridge Initialize(SMFPlayer player, string scriptableName) { JavascriptBridge bridge = null; if (HtmlPage.IsEnabled && !Instances.ContainsKey(scriptableName)) { bridge = new JavascriptBridge(player, scriptableName); Instances.Add(scriptableName, bridge); } return bridge; }
public void SetPlayer(FrameworkElement player) { _player = player as SMFPlayer; }