// // Player public ActionResult Player(WebStreamMediaType type, string itemId, bool showVideo = true) { // TODO: insert proper support for non-resizing players // TODO: insert proper support for VLC player // get the profile string target = showVideo ? "pc-flash-video" : "pc-flash-audio"; string preferredProfile = showVideo ? "Flash LQ" : "Flash Audio"; string transcoderName = Request.Params["player"] != null ? Request.Params["player"] : preferredProfile; WebTranscoderProfile profile = MPEServices.MASStreamControl.GetTranscoderProfileByName(transcoderName); if (profile == null || profile.Target != target) { List<WebTranscoderProfile> profiles = MPEServices.MASStreamControl.GetTranscoderProfilesForTarget(target); if(profiles.Count == 0) throw new ArgumentException("Profile does not exists"); profile = profiles.First(); } VideoPlayer player = VideoPlayer.Flash; string viewName = Enum.GetName(typeof(VideoPlayer), player) + "Player"; // player size WebResolution playerSize; if (!showVideo) { playerSize = new WebResolution() { Width = 300, Height = 120 }; } else { playerSize = MPEServices.MASStreamControl.GetStreamSize((WebStreamMediaType)type, GetProvider((WebStreamMediaType)type), itemId, profile.Name); } // generate url RouteValueDictionary parameters = new RouteValueDictionary(); parameters["item"] = itemId; parameters["transcoder"] = transcoderName; // generate view return PartialView(viewName, new StreamModel { URL = Url.Action(Enum.GetName(typeof(WebStreamMediaType), type), parameters), Size = playerSize }); }
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 }); }