2017-07-25 11 views
0

最近、Live555、WebRTC、FFMPEGのrtspストリーミングサーバを(他のライブラリを使用して)管理していました。 すべてが素晴らしいですが、私の最終的な目標は、私の処理フットプリントを減らすためにLive555を最大限に活用することです。 rtpストリームが開始されると、HTTPシグナリングサーバはキープアライブにのみ使用されます。Live555 HTTPキャパシティをシグナリング用のサーバとして使用

私の質問は(私はLive555ではコードやドキュメントで答えを見つけるように見えることないので)である:

はLive555ではを使用してHTTPサーバーを構築する方法はありますか?

答えて

1

live555には、RTP over HTTPのストリーミングに使用される埋め込みHTTPサーバがあります。

あなたはそれがhandleHTTPCmd_StreamingGETあなたのGETの実装を実現するためにRTSPServer::RTSPClientConnection

の過負荷を使用することができ、以下を行う必要があります。

  • 過負荷RTSPServer :: RTSPClientConnectionのhandleHTTPCmd_StreamingGETを実装するクラス
  • 過負荷RTSPServerクラスをRTSPServer :: RTSPClientConnectionのクラスをインスタンス化するために

のように、エラー処理なしで、非常に単純化したサンプルを与えることができる一緒にすべてを置く:

#include "BasicUsageEnvironment.hh" 
#include "RTSPServer.hh" 

class HTTPServer : public RTSPServer { 
    class HTTPClientConnection : public RTSPServer::RTSPClientConnection { 
     public: 
      HTTPClientConnection(RTSPServer& ourServer, int clientSocket, struct sockaddr_in clientAddr) 
       : RTSPServer::RTSPClientConnection(ourServer, clientSocket, clientAddr) {} 

     private: 
      virtual void handleHTTPCmd_StreamingGET(char const* urlSuffix, char const* fullRequestStr) {   
       // build HTTP answer 
       snprintf((char*)fResponseBuffer, sizeof fResponseBuffer, 
        "HTTP/1.1 200 OK\r\n" 
        "Content-Length: %zd\r\n" 
        "\r\n" 
        "%s", 
        strlen(fullRequestStr),fullRequestStr); 
      } 
    }; 

    public: 
     static HTTPServer* createNew(UsageEnvironment& env, Port rtspPort) { 
      return new HTTPServer(env, setUpOurSocket(env, rtspPort), rtspPort); 
     } 

     HTTPServer(UsageEnvironment& env, int ourSocket, Port rtspPort) 
      : RTSPServer(env, ourSocket, rtspPort, NULL, 0) {} 

     RTSPServer::RTSPClientConnection* createNewClientConnection(int clientSocket, struct sockaddr_in clientAddr) { 
      return new HTTPClientConnection(*this, clientSocket, clientAddr); 
     } 
}; 

ようなHTTP、それが受信した要求、何とこのHTTPServerの実装の答え:

GET/HTTP/1.1 
Host: 127.0.0.1:9999 
User-Agent: curl/7.54.0 
Accept: */* 
関連する問題