live555 testOnDemandRTSPServer.cpp の詳細な解釈

live555 testOnDemandRTSPServer.cpp の詳細な解釈

解釈

これはtestOnDemandRTSPServer、組み込みの RTSP サーバーを介してユニキャスト モードでさまざまなタイプのファイルをライブ ストリーミングする方法を示す というサンプル プログラムです。コードの主要な部分と機能は次のとおりです。

  1. ヘッダー ファイルと名前空間をインポートします

    #include "liveMedia.hh"
    #include "BasicUsageEnvironment.hh"
    
  2. グローバル変数の定義:

    UsageEnvironment* env;
    Boolean reuseFirstSource = False; // 控制是否为每个客户端重用同一输入流
    Boolean iFramesOnly = False; // 控制是否仅流式传输MPEG-1或2视频"I"帧
    
  3. 主な機能:

    int main(int argc, char** argv) {
          
          
        // 创建任务调度器和使用环境
        TaskScheduler* scheduler = BasicTaskScheduler::createNew();
        env = BasicUsageEnvironment::createNew(*scheduler);
    
        // 创建RTSP服务器
        RTSPServer* rtspServer = RTSPServer::createNew(*env, 8554, NULL);
        if (rtspServer == NULL) {
          
          
            *env << "Failed to create RTSP server: " << env->getResultMsg() << "\n";
            exit(1);
        }
    
        // 设置不同类型的流媒体
        // ...
    
        // 创建其他类型的流媒体
        // ...
    
        // 启动RTSP服务器和HTTP隧道
        env->taskScheduler().doEventLoop(); // 不会返回
    
        return 0; // 防止编译器警告
    }
    
  4. さまざまなタイプのストリーミング メディアをセットアップする: コードには多くのブロックが含まれており、各ブロックは MPEG-4 ビデオ、H.264 ビデオ、H.265 ビデオ、MPEG-1 または 2 オーディオなどのさまざまなタイプのストリーミング メディアをセットアップするために使用されます。ビデオ、MP3 オーディオ、WAV オーディオなど。各ブロックはServerMediaSessionオブジェクトを作成し、1 つ以上のServerMediaSubsessionオブジェクトを追加して、さまざまなメディア ストリームを RTSP サーバーに追加します。

  5. ストリーミング セッションの作成: 各ブロックは、ServerMediaSessionストリーミング セッションを表すオブジェクトを作成します。セッションには 1 つ以上のメディア サブセッションを含めることができ、各サブセッションはビデオ、オーディオなどの特定のタイプのメディア ストリームを表します。

  6. メディア サブセッションの追加: 各ストリーミング セッションで、addSubsessionメソッドを使用してメディア サブセッションをセッションに追加します。各サブセッションは、ビデオ サブセッション、オーディオ サブセッションなど、適切なタイプとしてインスタンス化されます。

  7. RTSP-over-HTTP トンネルの開始: プログラムは、HTTP ポート上で RTSP ストリームを送信するために、HTTP トンネルを介して RTSP-over-HTTP をセットアップしようとします。TLS の使用状況に応じて、デフォルトの HTTP ポート (80) または TLS HTTP ポート (443) の使用が試行される場合があります。

  8. cancelStream 関数: この関数は、ストリーム名や入力ファイル名など、ストリーミング メディアに関する情報を出力するために使用されます。

このサンプル プログラムは、LIVE555 ライブラリのクラスとメソッドを使用して RTSP サーバーをセットアップし、さまざまな種類のメディア ファイルをリアルタイム ストリーミングで送信する方法を示します。ニーズに応じてストリーミングの種類と設定をカスタマイズできます。LIVE555 ライブラリの機能と使用法について詳しく知りたい場合は、LIVE555 の公式ドキュメントとチュートリアルを参照することをお勧めします。

知らせ

ストリーミング開発に Live555 ライブラリを使用する場合、次の領域で追加情報が必要になる場合があります。

  1. コンパイルとビルド: 開発環境では、Live555 ライブラリをコンパイルしてビルドし、必要な静的リンク ライブラリまたは動的リンク ライブラリを生成する必要があります。通常、これらの手順は、Live555 が提供する公式ガイドに従って実行できます。コンパイル時に適切な構成とプラットフォーム オプションを選択してください。

  2. 入力メディア ファイル: サンプル コード内のさまざまなストリーミング セッションでは、さまざまなタイプのメディア ファイル ( .m4e.264.265.mpgなど) が使用されます。適切な入力メディア ファイルを準備するか、ニーズに応じてメディア ファイルを作成、取得、生成する必要があります。

  3. RTSP サーバーのアドレスとポート: サンプル コードでは、RTSP サーバーはデフォルトのアドレス ( localhost) とポート ( 8554) を使用します。必要に応じてこれらの設定を変更できます。他のデバイスからこのサーバーにアクセスする場合は、ネットワーク設定が正しいことを確認する必要があります。

  4. セキュリティ設定: サンプル コードでカバーされているセキュリティ設定はそれほど多くありません。アプリケーションにセキュリティが必要な場合は、アクセス制御やユーザー認証などのメカニズムを実装して、許可されたユーザーのみがストリーミング メディアにアクセスできるようにする必要がある場合があります。

  5. エラー処理とログ: 実際のアプリケーションでは、適切なエラー処理とログが非常に重要です。問題の診断と解決に役立つように、適切なエラー チェックと処理、および詳細なログをコードに必ず追加してください。

  6. ストリーミング クライアント: サンプル コードは、メディア コンテンツをストリーミングするための RTSP サーバーです。このコンテンツを受信して​​再生するには、ストリーミング クライアントが必要になる場合もあります。ストリーミング クライアントでは、Live555 が提供するクライアント クラスを使用してこれを実現できます。

  7. プロトコルのサポート: Live555 ライブラリは、RTSP、RTCP、RTP などの複数のストリーミング メディア プロトコルをサポートします。アプリケーションが適切に構成され、サポートされているプロトコルでセットアップされていることを確認してください。

  8. リソースの解放: アプリケーションの終了時に、メモリ リークやリソースの浪費を防ぐために、Live555 ライブラリで作成されたオブジェクトとリソースが適切に解放および破棄されていることを確認します。

要約すると、ストリーミング メディア開発に Live555 ライブラリを使用するには、その中心的な概念、クラス、メソッドと、アプリケーションを実装するためのライブラリの構築、構成、および使用方法を理解する必要があります。公式ドキュメント、サンプル コード、チュートリアルは、このライブラリを学習してマスターするための強力なリソースになります。

おすすめ

転載: blog.csdn.net/qq_45865950/article/details/132689211