예제 #1
0
        internal static bool SendPlayoutRequest(PlayoutSettings playout, byte[] data)
        {
            //'.' is illegal in url
            if (playout.Hostname.Trim().Equals(".", StringComparison.InvariantCultureIgnoreCase))
            {
                playout.Hostname = "localhost";
            }

            var url = string.Format("http://{0}:{1}/postbox", playout.Hostname, 5521 + playout.Id);

            var request = new WebClient();

            request.Headers.Add("Content-Type", "text/xml; utf-8");

            try
            {
                request.UploadData(url, "POST", data);
                return(true);
            }
            catch (Exception e)
            {
                Console.WriteLine("{0} - Failed on sending request. Server: {1}, instance: {2}, Error: {3}",
                                  DateTime.Now.ToLongTimeString(),
                                  playout.Hostname,
                                  playout.Id,
                                  e.Message);
                return(false);
            }
        }
예제 #2
0
        private PlayoutSettings GetPlayoutSettings()
        {
            var result = new PlayoutSettings();

            result.RendererSettings.VideoDevice = Properties.Settings.Default.RendererDeviceName;
            result.PlaylistSettings             = PlayoutRepository.GetMPlaylistSettings();
            result.CGItems = PlayoutRepository.GetCGItems();
            return(result);
        }
예제 #3
0
 public Player(IPlayPreview preview, PlayoutSettings settings, ILog log, IDateTimeService dateTimeService,
               IMediaFilePathResolver filePathResolver)
 {
     _preview          = preview;
     _log              = log;
     _rendererInfo     = settings.RendererSettings;
     _playlistSettings = settings.PlaylistSettings;
     _dateTimeService  = dateTimeService;
     _filePathResolver = filePathResolver;
 }
예제 #4
0
        public PlayoutSystem(IPlayPreview preview, IPlaylist3 playlist,
                             PlayoutSettings settings, ILog log, IChannelSwitcher switcher, IMediaFilePathResolver filePathResolver,
                             CGItemCollection cgItems)
        {
            _playlist = playlist;
            var player = new Player(preview, settings, log, DefaultDateTimeService.Instance, filePathResolver);

            _scheduler = new PlayScheduler(player, playlist, DefaultDateTimeService.Instance, switcher, cgItems);
            _scheduler.CurrentPlayItemChanged += OnCurrentPlayItemChanged;
            _scheduler.NextPlayItemChanged    += OnNextPlayItemChanged;
        }
예제 #5
0
        public void Start()
        {
            if (_innerPlayout == null)
            {
                PlayoutSettings settings = GetPlayoutSettings();
                var             playout  = new PlayoutSystem(_preview, _playlist, settings, this.Log, ChannelSwitcher.Instance,
                                                             _filePathResolver, settings.CGItems);
                playout.CurrentPlayItemChanged += Playout_CurrentPlayItemChanged;
                playout.NextPlayItemChanged    += Playout_NextPlayItemChanged;
                playout.Start();
                _innerPlayout = playout;

                OnStateChanged();
            }
        }
예제 #6
0
파일: Program.cs 프로젝트: tby100/Demo
        static void Main(string[] args)
        {
            try
            {
                var url             = ConfigurationManager.AppSettings.Get("RSS_Url");
                var startPubDateStr = ConfigurationManager.AppSettings.Get("RSS_StartPubDate");

                var formatDateStr = ConfigurationManager.AppSettings.Get("RSS_DateTimeFormat");


                var output = ConfigurationManager.AppSettings.Get("Template_File");

                var variableName = ConfigurationManager.AppSettings.Get("Target_TextVariable");

                var interval = Convert.ToInt32(ConfigurationManager.AppSettings.Get("Update_Interval"));

                var host     = ConfigurationManager.AppSettings.Get("Playout_Hostname");
                var instance = Convert.ToInt32(ConfigurationManager.AppSettings.Get("Playout_Instance"));

                Console.ForegroundColor = ConsoleColor.Yellow;
                Console.WriteLine("     Input parameters ----------  ");
                Console.WriteLine("RSS_Url: {0}", url);
                Console.WriteLine("RSS_StartPubDate: {0}", startPubDateStr);
                Console.WriteLine("RSS_DateTimeFormat: {0}", formatDateStr);
                Console.WriteLine("Template_File: {0}", output);
                Console.WriteLine("Target_TextVariable: {0}", variableName);
                Console.WriteLine("Update_Interval: {0}", interval);
                Console.WriteLine("Playout_Hostname: {0}", host);
                Console.WriteLine("Playout_Instance: {0}", instance);
                Console.WriteLine();
                Console.ResetColor();

                #region Validating arguments

                if (string.IsNullOrEmpty(url))
                {
                    throw new ArgumentException("Empty RSS-feed url");
                }

                if (string.IsNullOrEmpty(output))
                {
                    throw new ArgumentException("Empty template file url");
                }

                if (string.IsNullOrEmpty(formatDateStr))
                {
                    throw new ArgumentException("Empty DateTime format");
                }

                if (!File.Exists(output))
                {
                    throw new ArgumentException("Template file not exists");
                }

                if (interval < 0)
                {
                    throw new ArgumentException("Update interval is out of range");
                }

                if (string.IsNullOrEmpty(host))
                {
                    throw new ArgumentException("Empty playout hostname");
                }

                if (interval < 0)
                {
                    throw new ArgumentException("Instance number is out of range");
                }

                #endregion

                DateTime startPubDate;

                try
                {
                    startPubDate = DateTime.ParseExact(startPubDateStr,
                                                       formatDateStr,
                                                       CultureInfo.InvariantCulture,
                                                       DateTimeStyles.None);
                }
                catch (Exception e)
                {
                    Console.WriteLine("Error datetime format. Apply default start time. {0}", e.Message);
                    startPubDate = DateTime.Now.AddDays(-1);
                }

                var rssSettings = new RssSettings {
                    Url = url, StartPubDate = startPubDate, DateTimeFormat = formatDateStr
                };
                var playout = new PlayoutSettings {
                    Id = instance, Hostname = host
                };
                var settings   = new Settings(rssSettings, output, variableName, playout);
                var controller = new Controller(settings, interval);

                while (Console.KeyAvailable)
                {
                    Console.ReadKey(true);
                }

                Console.ForegroundColor = ConsoleColor.Green;
                Console.WriteLine("Press 'Escape' to exit.");
                Console.WriteLine();
                Console.ResetColor();

                while (Console.ReadKey(true).Key != ConsoleKey.Escape) /* ignore other key */ } {
                controller.Dispose();
        }