ストリーミングサーバーの開発を考えていますが、RTSPで行う次の質問があります(URLの例:rtsp://192.168.0.184/myvideo.mpg
)またはRTP
(URLの例:rtp://192.168.0.184
)。
私が理解したように、RTSP
サーバーは主に、既に存在する、つまりライブではないファイルのストリーミングに使用されます。 RTP
サーバーはブロードキャストに使用されます。
私が間違っていれば誰かが私を修正します、私は正しいですか?.
ライブコンテンツをコンピューター画面にブロードキャストするサーバー、つまりストリーミングでブロードキャストされるときに表示されるサーバーを開発したい。
何か問題が発生しています... [〜#〜] rtsp [〜#〜] はリアルタイムストリーミングプロトコルです。つまり、リアルタイムで好きなものをストリーミングできます。そのため、ライブコンテンツをストリーミングするために使用できます(ビデオ、オーディオ、テキスト、プレゼンテーションなど)。 [〜#〜] rtp [〜#〜] は、RTSPでネゴシエートされるメディアデータを転送するために使用される転送プロトコルです。
RTSPを使用して、RTPを介したメディア伝送を制御します。ストリームのセットアップ、再生、一時停止、分解に使用します...
したがって、URLが要求されたときにサーバーでストリーミングを開始する場合は、何らかのRTP専用サーバーを実装できます。ただし、より詳細な制御が必要で、ライブビデオをストリーミングする場合は、RTSPを使用する必要があります。RTSPはSDPやその他の重要なデコードデータを送信するためです。
ここでリンクしたドキュメントを読んでください。それらは良い出発点です。
知る限りでは、RTSPはストリームをまったく送信せず、PLAYやSTOPなどの機能を備えた帯域外制御プロトコルです。
Raw UDPまたはRTPは、raw TCPまたはHTTP over TCP。
特定のプログラムを特定の伝送プロトコルでストリーミングできるようにするには、カプセル化方式をコンテナ形式に対して定義する必要があります。たとえば、TSコンテナはUDPで送信できますが、Matroskaは送信できません。
ほぼすべてをTCPで転送できます。
(どちらのcodecを使用するかは、使用できるコンテナ形式を制限するため、間接的にも重要です。)
いくつかの基本:
RTSPサーバーは、ライブソースだけでなく、デッドソースにも使用できます。 RTSPプロトコルはコマンド(VCRリモートのような)を提供し、機能は実装に依存します。
RTPは、オーディオとビデオをリアルタイムで転送するために使用されるリアルタイムプロトコルです。使用されるトランスポートは、トランスポートのアドレスとポートに応じて、ユニキャスト、マルチキャスト、またはブロードキャストにすることができます。 RTPは、パケット化、並べ替え、ジッター制御、QoS、リップシンクのサポートなど、多くのことを行います。
ストリーミングサーバーをブロードキャストする場合は、RTSP(制御用)とRTP(オーディオとビデオのブロードキャスト)の両方が必要です。
まず、 live555 で提供されるサンプルコードをご覧ください。
あなたの痛みが聞こえます。私は今(数年後)これを経験しています。私が学んだことから、RTSPを「VCRコントローラー」と考えることができます。このプロトコルでは、再生するストリーム(プレゼンテーション)を指定できます。その後、メディアの説明を送信します。 RTSPを使用して、リモートストリームを再生、停止、一時停止、および記録します。メディア自体がRTPを経由します。 RTSPは通常、別のソケットまたは通信層で実装されます。これは単なるプロトコルですが、ほとんどの場合、サーバーはソケットを介して実装されます。ライブストリームの場合、要求するRTSPストリームは単にストリームの名前です。サーバー上のファイルを参照する必要はありません。サーバーのRTSP実装は、そのストリームを解析し、ライブグラフを作成して、そのストリーム名のSDP(説明)を提供できます。ただし、これはもちろんRTSPサーバーの実装方法に固有のものです。 「ライブ」ストリームの場合は、RTPを使用する方がおそらく簡単ですが、SDPをRTPサーバーからそのストリームを再生するクライアントに転送する方法が必要です。
私はそれが正しいと思います。 RTSPは内部でRTPを使用できます。