·您当前的位置:首页 > 技术教程 > live555技术 >

[live555]live555笔记-RTSP流媒体服务

时间:2015-03-26 10:54酷播
基础基本搞明白了,那么RTSP,RTP等这些协议又是如何利用这些基础机制运作的呢?首先来看RTSP.RTSP首先需建立TCP侦听socket。可见于此函数:

基础基本搞明白了,那么RTSP,RTP等这些协议又是如何利用这些基础机制运作的呢?
首先来看RTSP.

RTSP首先需建立TCP侦听socket。可见于此函数:

  1. DynamicRTSPServer* DynamicRTSPServer::createNew(UsageEnvironment& env, Port ourPort,   
  2. UserAuthenticationDatabase* authDatabase,   
  3. unsigned reclamationTestSeconds) {   
  4. int ourSocket = setUpOurSocket(env, ourPort); //建立TCP socket   
  5. if (ourSocket == -1)   
  6. return NULL;   
  7.    
  8.    
  9. return new DynamicRTSPServer(env, ourSocket, ourPort, authDatabase,   
  10. reclamationTestSeconds);   
  11. }   

要帧听客户端的连接,就需要利用任务调度机制了,所以需添加一个socket handler。可见于此函数:

  1. RTSPServer::RTSPServer(UsageEnvironment& env,    
  2.         int ourSocket,    
  3.         Port ourPort,   
  4.         UserAuthenticationDatabase* authDatabase,   
  5.         unsigned reclamationTestSeconds) :   
  6.         Medium(env),    
  7.         fRTSPServerSocket(ourSocket),   
  8.         fRTSPServerPort(ourPort),   
  9.         fHTTPServerSocket(-1),   
  10.         fHTTPServerPort(0),   
  11.         fClientSessionsForHTTPTunneling(NULL),    
  12.         fAuthDB(authDatabase),   
  13.         fReclamationTestSeconds(reclamationTestSeconds),   
  14.         fServerMediaSessions(HashTable::create(STRING_HASH_KEYS))    
  15. {   
  16. #ifdef USE_SIGNALS   
  17.     // Ignore the SIGPIPE signal, so that clients on the same host that are killed   
  18.     // don't also kill us:   
  19.     signal(SIGPIPE, SIG_IGN);   
  20. #endif   
  21.    
  22.    
  23.     // Arrange to handle connections from others:   
  24.     env.taskScheduler().turnOnBackgroundReadHandling(   
  25.             fRTSPServerSocket,   
  26.             (TaskScheduler::BackgroundHandlerProc*) &incomingConnectionHandlerRTSP,   
  27.             this);   
  28. }   

当收到客户的连接时需保存下代表客户端的新socket,以后用这个socket与这个客户通讯。每个客户将来会对应一个rtp会话,而且各客户的 RTSP请求只控制自己的rtp会话,那么最好建立一个会话类,代表各客户的rtsp会话。于是类 RTSPServer::RTSPClientSession产生,它保存的代表客户的socket。下为RTSPClientSession的创建过程

热门文章推荐

请稍候...

保利威视云平台-轻松实现点播直播视频应用

酷播云数据统计分析跨平台播放器