public IPlayer GetPlayer(MediaItem mediaItem) { string mimeType; string title; if (!mediaItem.GetPlayData(out mimeType, out title)) { return(null); } PlaylistItem item = mediaItem as PlaylistItem; if (item != null && item.InputStreamSite != null) { Dictionary <string, string> properties; if (item.InputStreamSite.GetStreamProperties(item.VideoInfo, out properties)) { // Replace raw url / token source by resolved stream url var resourceAccessor = new RawUrlResourceAccessor(properties["inputstream.streamurl"]); IList <MultipleMediaItemAspect> providerResourceAspects; MediaItemAspect.TryGetAspects(item.Aspects, ProviderResourceAspect.Metadata, out providerResourceAspects); MultipleMediaItemAspect providerResourceAspect = providerResourceAspects.First(); String raPath = resourceAccessor.CanonicalLocalResourcePath.Serialize(); providerResourceAspect.SetAttribute(ProviderResourceAspect.ATTR_RESOURCE_ACCESSOR_PATH, raPath); IResourceLocator locator = mediaItem.GetResourceLocator(); InputStreamPlayer iplayer = (false) ? new InputStreamDownloader(@"F:\Capture\Dump.mkv") : new InputStreamPlayer(); try { InitOnline(iplayer, properties); iplayer.SetMediaItem(locator, title); if (iplayer.DecryptError) { throw new Exception("Decrypting by InputStream failed."); } return(iplayer); } catch (Exception ex) { ServiceRegistration.Get <ILogger>().Warn("Error playing media item '{0}': {1}", locator, ex.Message); iplayer.Dispose(); } } } // Also try browser player as fallback if InputStream decoding failed if (mimeType == WebBrowserVideoPlayer.ONLINEVIDEOSBROWSER_MIMETYPE) { var player = new WebBrowserVideoPlayer(); if (!player.Init(mediaItem)) { player.Dispose(); return(null); } return(player); } return(null); }
public IPlayer GetPlayer(MediaItem mediaItem) { string mimeType; string title; if (!mediaItem.GetPlayData(out mimeType, out title)) return null; PlaylistItem item = mediaItem as PlaylistItem; if (item != null && item.InputStreamSite != null) { Dictionary<string, string> properties; if (item.InputStreamSite.GetStreamProperties(item.VideoInfo, out properties)) { // Replace raw url / token source by resolved stream url var resourceAccessor = new RawUrlResourceAccessor(properties["inputstream.streamurl"]); IList<MultipleMediaItemAspect> providerResourceAspects; MediaItemAspect.TryGetAspects(item.Aspects, ProviderResourceAspect.Metadata, out providerResourceAspects); MultipleMediaItemAspect providerResourceAspect = providerResourceAspects.First(); String raPath = resourceAccessor.CanonicalLocalResourcePath.Serialize(); providerResourceAspect.SetAttribute(ProviderResourceAspect.ATTR_RESOURCE_ACCESSOR_PATH, raPath); IResourceLocator locator = mediaItem.GetResourceLocator(); InputStreamPlayer iplayer = (false) ? new InputStreamDownloader(@"F:\Capture\Dump.mkv") : new InputStreamPlayer(); try { InitOnline(iplayer, properties); iplayer.SetMediaItem(locator, title); if (iplayer.DecryptError) throw new Exception("Decrypting by InputStream failed."); return iplayer; } catch (Exception ex) { ServiceRegistration.Get<ILogger>().Warn("Error playing media item '{0}': {1}", locator, ex.Message); iplayer.Dispose(); } } } // Also try browser player as fallback if InputStream decoding failed if (mimeType == WebBrowserVideoPlayer.ONLINEVIDEOSBROWSER_MIMETYPE) { var player = new WebBrowserVideoPlayer(); if (!player.Init(mediaItem)) { player.Dispose(); return null; } return player; } return null; }