Exemplo n.º 1
0
 /// <summary>
 /// Send VOD init control message
 /// </summary>
 /// <param name="msgIn"></param>
 /// <param name="start"></param>
 private void SendVODInitCM(IMessageInput msgIn, int start)
 {
     OOBControlMessage oobCtrlMsg = new OOBControlMessage();
     oobCtrlMsg.Target = typeof(IPassive).Name;
     oobCtrlMsg.ServiceName = "init";
     oobCtrlMsg.ServiceParameterMap.Add("startTS", start);
     _msgIn.SendOOBControlMessage(this, oobCtrlMsg);
 }
Exemplo n.º 2
0
        /// <summary>
        /// Send VOD seek control message
        /// </summary>
        /// <param name="msgIn">Message input</param>
        /// <param name="position">New timestamp to play from</param>
        private void SendVODSeekCM(IMessageInput msgIn, int position)
        {
            OOBControlMessage oobCtrlMsg = new OOBControlMessage();

            oobCtrlMsg.Target      = typeof(ISeekableProvider).Name;
            oobCtrlMsg.ServiceName = "seek";
            oobCtrlMsg.ServiceParameterMap.Add("position", position);
            msgIn.SendOOBControlMessage(this, oobCtrlMsg);

            lock (this.SyncRoot)
            {
                // Reset properties
                _vodStartTS    = 0;
                _serverStartTS = System.Environment.TickCount;
                if (_nextRTMPMessage != null)
                {
                    try
                    {
                        PushMessage(_nextRTMPMessage);
                    }
                    catch (IOException ex)
                    {
                        log.Error("Error while sending message.", ex);
                    }
                    _nextRTMPMessage = null;
                }
                ResetMessage reset = new ResetMessage();
                try
                {
                    PushMessage(reset);
                }
                catch (IOException ex)
                {
                    log.Error("Error while sending message.", ex);
                }
                ScheduleNextMessage();
            }
        }
Exemplo n.º 3
0
 /// <summary>
 /// Send VOD check video control message
 /// </summary>
 /// <param name="msgIn"></param>
 /// <returns></returns>
 private bool SendCheckVideoCM(IMessageInput msgIn)
 {
     OOBControlMessage oobCtrlMsg = new OOBControlMessage();
     oobCtrlMsg.Target = typeof(IStreamTypeAwareProvider).Name;
     oobCtrlMsg.ServiceName = "hasVideo";
     msgIn.SendOOBControlMessage(this, oobCtrlMsg);
     if (oobCtrlMsg.Result is Boolean)
     {
         return (Boolean)oobCtrlMsg.Result;
     }
     else
     {
         return false;
     }
 }
Exemplo n.º 4
0
 /// <summary>
 /// Send VOD seek control message
 /// </summary>
 /// <param name="msgIn"></param>
 /// <param name="position"></param>
 /// <returns></returns>            
 private int SendVODSeekCM(IMessageInput msgIn, int position)
 {
     OOBControlMessage oobCtrlMsg = new OOBControlMessage();
     oobCtrlMsg.Target = typeof(ISeekableProvider).Name;
     oobCtrlMsg.ServiceName = "seek";
     oobCtrlMsg.ServiceParameterMap.Add("position", position);
     msgIn.SendOOBControlMessage(this, oobCtrlMsg);
     if (oobCtrlMsg.Result is int)
     {
         return (int)oobCtrlMsg.Result;
     }
     else
     {
         return -1;
     }
 }
Exemplo n.º 5
0
        /// <summary>
        /// Send VOD seek control message
        /// </summary>
        /// <param name="msgIn">Message input</param>
        /// <param name="position">New timestamp to play from</param>
        private void SendVODSeekCM(IMessageInput msgIn, int position)
        {
            OOBControlMessage oobCtrlMsg = new OOBControlMessage();
            oobCtrlMsg.Target = typeof(ISeekableProvider).Name;
            oobCtrlMsg.ServiceName = "seek";
            oobCtrlMsg.ServiceParameterMap.Add("position", position);
            msgIn.SendOOBControlMessage(this, oobCtrlMsg);

            lock (this.SyncRoot)
            {
                // Reset properties
                _vodStartTS = 0;
                _serverStartTS = System.Environment.TickCount;
                if (_nextRTMPMessage != null)
                {
                    try
                    {
                        PushMessage(_nextRTMPMessage);
                    }
                    catch (IOException ex)
                    {
                        log.Error("Error while sending message.", ex);
                    }
                    _nextRTMPMessage = null;
                }
                ResetMessage reset = new ResetMessage();
                try
                {
                    PushMessage(reset);
                }
                catch (IOException ex)
                {
                    log.Error("Error while sending message.", ex);
                }
                ScheduleNextMessage();
            }
        }