// // Player protected ActionResult CreatePlayer(IWebStreamingService streamControl, PlayerViewModel model, List <StreamTarget> targets, WebTranscoderProfile profile, bool album) { // save stream request if (!PlayerOpenedBy.Contains(Request.UserHostAddress)) { PlayerOpenedBy.Add(Request.UserHostAddress); } // get all transcoder profiles List <string> profiles = new List <string>(); foreach (StreamTarget target in targets) { profiles = profiles.Concat(streamControl.GetTranscoderProfilesForTarget(target.Name).Select(x => x.Name)).Distinct().ToList(); } // get view properties VideoPlayer player = targets.First(x => profile.Targets.Contains(x.Name)).Player; string viewName = Enum.GetName(typeof(VideoPlayer), player) + (album ? "Album" : "") + "Player"; // generate view model.Transcoders = profiles; model.Transcoder = profile.Name; model.TranscoderProfile = profile; model.Player = player; model.PlayerViewName = viewName; Log.Debug("Created player with size={0} view={1} transcoder={2} url={3}", model.Size, viewName, profile.Name, model.URL); return(PartialView("Player", model)); }
protected WebTranscoderProfile GetProfile(IWebStreamingService streamControl, string defaultProfile) { string profileName = Request.QueryString["transcoder"] ?? Request.Form["transcoder"] ?? defaultProfile; var profile = streamControl.GetTranscoderProfileByName(profileName); if (profile != null) { return(profile); } Log.Error("Warning: Requested non-existing profile {0}; using default {1}", profileName, defaultProfile); return(streamControl.GetTranscoderProfileByName(defaultProfile)); }
private List <SelectListItem> GetProfiles(IWebStreamingService service, params string[] targets) { List <SelectListItem> items = new List <SelectListItem>(); foreach (string target in targets) { foreach (var profile in service.GetTranscoderProfilesForTarget(target)) { items.Add(new SelectListItem() { Text = profile.Name, Value = profile.Name }); } } return(items); }
private List <SelectListItem> GetProfiles(IWebStreamingService service, IEnumerable <StreamTarget> targets) { List <SelectListItem> items = new List <SelectListItem>(); foreach (StreamTarget target in targets) { foreach (var profile in service.GetTranscoderProfilesForTarget(target.Name)) { items.Add(new SelectListItem() { Text = profile.Name, Value = profile.Name }); } } return(items.OrderBy(x => x.Value).ToList()); }
// // Player protected ActionResult CreatePlayer(IWebStreamingService streamControl, PlayerViewModel model, List <StreamTarget> targets, WebTranscoderProfile profile, bool album) { // save stream request if (!PlayerOpenedBy.Contains(Request.UserHostAddress)) { PlayerOpenedBy.Add(Request.UserHostAddress); } // get view properties VideoPlayer player = targets.First(x => profile.Targets.Contains(x.Name)).Player; string viewName = Enum.GetName(typeof(VideoPlayer), player) + (album ? "Album" : "") + "Player"; // generate view var supportedTargets = Configuration.StreamingPlatforms.GetValidTargetsForUserAgent(Request.UserAgent).Intersect(targets.Select(x => x.Name)); model.Transcoders = ProfileModel.GetProfilesForTargets(streamControl, supportedTargets).Select(x => x.Name); model.Transcoder = profile.Name; model.TranscoderProfile = profile; model.Player = player; model.PlayerViewName = viewName; Log.Debug("Created player with size={0} view={1} transcoder={2} url={3}", model.Size, viewName, profile.Name, model.URL); return(PartialView("Player", model)); }
private List<SelectListItem> GetProfiles(IWebStreamingService service, params string[] targets) { List<SelectListItem> items = new List<SelectListItem>(); foreach (string target in targets) { foreach(var profile in service.GetTranscoderProfilesForTarget(target)) { items.Add(new SelectListItem() { Text = profile.Name, Value = profile.Name }); } } return items; }
private void cmdConnect_Click(object sender, EventArgs e) { if (CURRENT_IP == "127.0.0.1" || CURRENT_IP == "localhost") { mWebStreamClient = ChannelFactory <IWebStreamingService> .CreateChannel(new NetNamedPipeBinding() { MaxReceivedMessageSize = 10000000 }, new EndpointAddress("net.pipe://localhost/MPExtended/StreamingService")); mStreamClient = ChannelFactory <IStreamingService> .CreateChannel(new NetNamedPipeBinding() { MaxReceivedMessageSize = 10000000 }, new EndpointAddress("net.pipe://localhost/MPExtended/StreamingService")); mServiceClient = ChannelFactory <IMediaAccessService> .CreateChannel(new NetNamedPipeBinding() { MaxReceivedMessageSize = 10000000 }, new EndpointAddress("net.pipe://localhost/MPExtended/MediaAccessService")); mTvClient = ChannelFactory <ITVAccessService> .CreateChannel(new NetNamedPipeBinding() { MaxReceivedMessageSize = 10000000 }, new EndpointAddress("net.pipe://localhost/MPExtended/TVAccessService")); } else { #pragma warning disable 0162 mWebStreamClient = ChannelFactory <IWebStreamingService> .CreateChannel(new BasicHttpBinding(), new EndpointAddress("http://" + CURRENT_IP + ":4321/MPExtended/StreamingService")); mStreamClient = ChannelFactory <IStreamingService> .CreateChannel(new BasicHttpBinding(), new EndpointAddress("http://" + CURRENT_IP + ":4321/MPExtended/StreamingService")); mServiceClient = ChannelFactory <IMediaAccessService> .CreateChannel(new BasicHttpBinding(), new EndpointAddress("http://" + CURRENT_IP + ":4321/MPExtended/MediaAccessService")); mTvClient = ChannelFactory <ITVAccessService> .CreateChannel(new BasicHttpBinding(), new EndpointAddress("http://" + CURRENT_IP + ":4321/MPExtended/TVAccessService")); #pragma warning restore 0162 } Log("Initialized"); // providers var config = mServiceClient.GetServiceDescription(); movieProvider = config.AvailableMovieLibraries.First().Id; fileProvider = config.AvailableFileSystemLibraries.First().Id; // load movies try { cbMovies.Items.Clear(); mMovies = mServiceClient.GetMoviesDetailed(movieProvider, null, null); foreach (WebMovieDetailed movie in mMovies) { cbMovies.Items.Add(movie.Title); } Log("Loaded movies"); } catch (Exception) { Log("Failed to connect to MAS"); } // load chanels try { cbChannels.Items.Clear(); mChannels = new List <WebChannelBasic>(); foreach (WebChannelGroup group in mTvClient.GetGroups()) { WebChannelBasic[] channels = mTvClient.GetChannelsBasic(group.Id).ToArray(); foreach (WebChannelBasic ch in channels) { cbChannels.Items.Add(ch.Title); mChannels.Add(ch); } } Log("Loaded channels"); } catch (Exception) { Log("Failed to connect to TV4Home"); } // load profiles try { cbProfiles.Items.Clear(); mProfiles = mWebStreamClient.GetTranscoderProfiles(); foreach (WebTranscoderProfile profile in mProfiles) { cbProfiles.Items.Add(profile.Name); } cbProfiles.SelectedIndex = 0; } catch (Exception) { Log("Failed to load profiles"); } }
protected WebTranscoderProfile GetProfile(IWebStreamingService streamControl, string defaultProfile) { string profileName = Request.QueryString["transcoder"] ?? Request.Form["transcoder"] ?? defaultProfile; var profile = streamControl.GetTranscoderProfileByName(profileName); if (profile != null) return profile; Log.Error("Warning: Requested non-existing profile {0}; using default {1}", profileName, defaultProfile); return streamControl.GetTranscoderProfileByName(defaultProfile); }
// // Player protected ActionResult CreatePlayer(IWebStreamingService streamControl, PlayerViewModel model, List<StreamTarget> targets, WebTranscoderProfile profile, bool album) { // save stream request if (!PlayerOpenedBy.Contains(Request.UserHostAddress)) { PlayerOpenedBy.Add(Request.UserHostAddress); } // get view properties VideoPlayer player = targets.First(x => profile.Targets.Contains(x.Name)).Player; string viewName = Enum.GetName(typeof(VideoPlayer), player) + (album ? "Album" : "") + "Player"; // generate view var supportedTargets = Configuration.StreamingPlatforms.GetValidTargetsForUserAgent(Request.UserAgent).Intersect(targets.Select(x => x.Name)); model.Transcoders = ProfileModel.GetProfilesForTargets(streamControl, supportedTargets).Select(x => x.Name); model.Transcoder = profile.Name; model.TranscoderProfile = profile; model.Player = player; model.PlayerViewName = viewName; Log.Debug("Created player with size={0} view={1} transcoder={2} url={3}", model.Size, viewName, profile.Name, model.URL); return PartialView("Player", model); }
// // Player protected ActionResult CreatePlayer(IWebStreamingService streamControl, PlayerViewModel model, List<StreamTarget> targets, WebTranscoderProfile profile, bool album) { // save stream request if (!PlayerOpenedBy.Contains(Request.UserHostAddress)) { PlayerOpenedBy.Add(Request.UserHostAddress); } // get all transcoder profiles List<string> profiles = new List<string>(); foreach (StreamTarget target in targets) { if (target.ValidForRequest(Request)) profiles = profiles.Concat(streamControl.GetTranscoderProfilesForTarget(target.Name).Select(x => x.Name)).Distinct().ToList(); } // get view properties VideoPlayer player = targets.First(x => profile.Targets.Contains(x.Name)).Player; string viewName = Enum.GetName(typeof(VideoPlayer), player) + (album ? "Album" : "") + "Player"; // generate view model.Transcoders = profiles; model.Transcoder = profile.Name; model.TranscoderProfile = profile; model.Player = player; model.PlayerViewName = viewName; Log.Debug("Created player with size={0} view={1} transcoder={2} url={3}", model.Size, viewName, profile.Name, model.URL); return PartialView("Player", model); }
public ActionResult Player(WebStreamMediaType type, string itemId, bool video = true) { // get transcoding profile IWebStreamingService streamControl = GetStreamControl(type); WebTranscoderProfile profile = null; if (Request.QueryString["transcoder"] != null) { profile = GetStreamControl(type).GetTranscoderProfileByName(Request.QueryString["transcoder"]); } if (Request.Form["transcoder"] != null) { profile = GetStreamControl(type).GetTranscoderProfileByName(Request.Form["transcoder"]); } if (profile == null) { string defaultName = ""; if (type == WebStreamMediaType.TV || type == WebStreamMediaType.Recording) { defaultName = Settings.ActiveSettings.DefaultTVProfile; } else if (video) { defaultName = Settings.ActiveSettings.DefaultMediaProfile; } else { defaultName = Settings.ActiveSettings.DefaultAudioProfile; } profile = GetStreamControl(type).GetTranscoderProfileByName(defaultName); } // get all transcoder profiles List <StreamTarget> targets = video ? StreamTarget.GetVideoTargets() : StreamTarget.GetAudioTargets(); List <string> profiles = new List <string>(); foreach (StreamTarget target in targets) { profiles = profiles.Concat(GetStreamControl(type).GetTranscoderProfilesForTarget(target.Name).Select(x => x.Name)).ToList(); } // get view properties VideoPlayer player = targets.First(x => x.Name == profile.Target).Player; string viewName = Enum.GetName(typeof(VideoPlayer), player) + "Player"; // player size WebResolution playerSize; if (!video) { playerSize = new WebResolution() { Width = 300, Height = 150 }; } else { playerSize = GetStreamControl(type).GetStreamSize(type, GetProvider(type), itemId, profile.Name); } // generate url RouteValueDictionary parameters = new RouteValueDictionary(); parameters["item"] = itemId; parameters["transcoder"] = profile.Name; // generate view return(PartialView(new PlayerViewModel { Transcoders = profiles, Transcoder = profile.Name, Player = player, PlayerViewName = viewName, URL = Url.Action(Enum.GetName(typeof(WebStreamMediaType), type), parameters), Size = playerSize })); }
public static IEnumerable<WebTranscoderProfile> GetProfilesForTargets(IWebStreamingService service, IEnumerable<string> targets) { return targets.Count() > 2 ? service.GetTranscoderProfiles().Where(x => x.Targets.Intersect(targets).Any()) : targets.SelectMany(target => service.GetTranscoderProfilesForTarget(target)).DistinctBy(x => x.Name); }
private void cmdConnect_Click(object sender, EventArgs e) { if (CURRENT_IP == "127.0.0.1" || CURRENT_IP == "localhost") { mWebStreamClient = ChannelFactory<IWebStreamingService>.CreateChannel(new NetNamedPipeBinding() { MaxReceivedMessageSize = 10000000 }, new EndpointAddress("net.pipe://localhost/MPExtended/StreamingService")); mStreamClient = ChannelFactory<IStreamingService>.CreateChannel(new NetNamedPipeBinding() { MaxReceivedMessageSize = 10000000 }, new EndpointAddress("net.pipe://localhost/MPExtended/StreamingService")); mServiceClient = ChannelFactory<IMediaAccessService>.CreateChannel(new NetNamedPipeBinding() { MaxReceivedMessageSize = 10000000 }, new EndpointAddress("net.pipe://localhost/MPExtended/MediaAccessService")); mTvClient = ChannelFactory<ITVAccessService>.CreateChannel(new NetNamedPipeBinding() { MaxReceivedMessageSize = 10000000 }, new EndpointAddress("net.pipe://localhost/MPExtended/TVAccessService")); } else { #pragma warning disable 0162 mWebStreamClient = ChannelFactory<IWebStreamingService>.CreateChannel(new BasicHttpBinding(), new EndpointAddress("http://" + CURRENT_IP + ":4321/MPExtended/StreamingService")); mStreamClient = ChannelFactory<IStreamingService>.CreateChannel(new BasicHttpBinding(), new EndpointAddress("http://" + CURRENT_IP + ":4321/MPExtended/StreamingService")); mServiceClient = ChannelFactory<IMediaAccessService>.CreateChannel(new BasicHttpBinding(), new EndpointAddress("http://" + CURRENT_IP + ":4321/MPExtended/MediaAccessService")); mTvClient = ChannelFactory<ITVAccessService>.CreateChannel(new BasicHttpBinding(), new EndpointAddress("http://" + CURRENT_IP + ":4321/MPExtended/TVAccessService")); #pragma warning restore 0162 } Log("Initialized"); // providers var config = mServiceClient.GetServiceDescription(); movieProvider = config.AvailableMovieLibraries.First().Id; fileProvider = config.AvailableFileSystemLibraries.First().Id; // load movies try { cbMovies.Items.Clear(); mMovies = mServiceClient.GetAllMoviesDetailed(movieProvider, null, null); foreach (WebMovieDetailed movie in mMovies) { cbMovies.Items.Add(movie.Title); } Log("Loaded movies"); } catch (Exception) { Log("Failed to connect to MAS"); } // load chanels try { cbChannels.Items.Clear(); mChannels = new List<WebChannelBasic>(); foreach (WebChannelGroup group in mTvClient.GetGroups()) { WebChannelBasic[] channels = mTvClient.GetChannelsBasic(group.Id).ToArray(); foreach (WebChannelBasic ch in channels) { cbChannels.Items.Add(ch.DisplayName); mChannels.Add(ch); } } Log("Loaded channels"); } catch (Exception) { Log("Failed to connect to TV4Home"); } // load profiles try { cbProfiles.Items.Clear(); mProfiles = mWebStreamClient.GetTranscoderProfiles(); foreach (WebTranscoderProfile profile in mProfiles) { cbProfiles.Items.Add(profile.Name); } cbProfiles.SelectedIndex = 0; } catch (Exception) { Log("Failed to load profiles"); } }
protected WebTranscoderProfile GetProfile(IWebStreamingService streamControl, string defaultProfile) { string profileName = Request.QueryString["transcoder"] ?? Request.Form["transcoder"] ?? defaultProfile; return streamControl.GetTranscoderProfileByName(profileName); }
protected WebTranscoderProfile GetProfile(IWebStreamingService streamControl, string defaultProfile) { string profileName = Request.QueryString["transcoder"] ?? Request.Form["transcoder"] ?? defaultProfile; return(streamControl.GetTranscoderProfileByName(profileName)); }
private List<SelectListItem> GetProfiles(IWebStreamingService service, IEnumerable<StreamTarget> targets) { List<SelectListItem> items = new List<SelectListItem>(); foreach (StreamTarget target in targets) { foreach(var profile in service.GetTranscoderProfilesForTarget(target.Name)) { items.Add(new SelectListItem() { Text = profile.Name, Value = profile.Name }); } } return items.OrderBy(x => x.Value).ToList(); }
// // Player private WebTranscoderProfile GetProfile(IWebStreamingService streamControl, string defaultProfile) { // get transcoding profile string profileName = null; if (Request.QueryString["transcoder"] != null) profileName = Request.QueryString["transcoder"]; if (Request.Form["transcoder"] != null) profileName = Request.Form["transcoder"]; if (profileName == null) profileName = defaultProfile; return streamControl.GetTranscoderProfileByName(profileName); }
public static IEnumerable <WebTranscoderProfile> GetProfilesForTargets(IWebStreamingService service, IEnumerable <string> targets) { return(targets.Count() > 2 ? service.GetTranscoderProfiles().Where(x => x.Targets.Intersect(targets).Any()) : targets.SelectMany(target => service.GetTranscoderProfilesForTarget(target)).DistinctBy(x => x.Name)); }