コード例 #1
0
        //
        // 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));
        }
コード例 #2
0
        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));
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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());
        }
コード例 #5
0
        //
        // 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));
        }
コード例 #6
0
 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;
 }
コード例 #7
0
        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");
            }
        }
コード例 #8
0
        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);
        }
コード例 #9
0
        //
        // 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);
        }
コード例 #10
0
        //
        // 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);
        }
コード例 #11
0
        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
            }));
        }
コード例 #12
0
ファイル: StreamModels.cs プロジェクト: puenktchen/MPExtended
 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);
 }
コード例 #13
0
        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");
            }
        }
コード例 #14
0
 protected WebTranscoderProfile GetProfile(IWebStreamingService streamControl, string defaultProfile)
 {
     string profileName = Request.QueryString["transcoder"] ?? Request.Form["transcoder"] ?? defaultProfile;
     return streamControl.GetTranscoderProfileByName(profileName);
 }
コード例 #15
0
        protected WebTranscoderProfile GetProfile(IWebStreamingService streamControl, string defaultProfile)
        {
            string profileName = Request.QueryString["transcoder"] ?? Request.Form["transcoder"] ?? defaultProfile;

            return(streamControl.GetTranscoderProfileByName(profileName));
        }
コード例 #16
0
 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();
 }
コード例 #17
0
ファイル: StreamController.cs プロジェクト: bbmjen/MPExtended
        //
        // 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);
        }
コード例 #18
0
ファイル: StreamModels.cs プロジェクト: regeszter/MPExtended
 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));
 }