質問: 例として、htmlページ内からのメディアのストリーミング したがって、私はソフトウェアエンジニアであり、ストリーミングメディアのしくみに関する重要な詳細を理解しようとしています。私は、自分のアプリケーションに関連するさまざまなコーデック、コンテナー形式、およびストリーミングプロトコルを理解するために、その日の大部分を費やしてきました。これまでのところ、それがどのように機能するかについての私の理解です。 ストリーミングメディアは、実際にはコンテナ形式およびストリーミングプロトコル:[に要約されます。 ____。] すべてのオーディオデータは(オーディオコーデックを介して)オーディオビットストリームにエンコードされます。 すべてのビデオデータは(再度、コーデックを介して)ビデオビットストリームにエンコードされます。 2つのストリームは、(multiplexed?)がcontainerにマージされ、最終的にファイル(このようなmp4など) 次に、特別なメディアサーバーがこのコンテナ(mp4ファイルまたはその他の形式)をクライアント(おそらく誰かのブラウザ内で実行されているhtml5ビデオプレーヤー)に配信します。 rtsp などのいくつかの標準ストリーミングプロトコル ブラウザークライアントの場合、ブラウザー自体にrtspクライアントがあり、それが何らかの形でユーザーにhtml5ビデオプレーヤーに提示されると思います icouldnginxなどのwebサーバーからmp4ファイルをホストしますまたはhttpd、ただしこれらのサーバーはrtspサーバーではないため、mp4へのリクエストはダウンロードリクエストとしてのみ扱うことができるため、メディアファイルをストリーミングできません 同様に、curlを使用してnginxサーバーからファイルをフェッチすると、curlもnginxもrtspを話さないため、ファイルのダウンロードとして扱われます。 しかし、ストリーミングメディアサーバー(videolan、red5、wowzaなど)からmp4ファイルをホストし、rtspクライアント(またはサポートされているストリーミングメディアクライアント)を使用してそのサーバーからのストリームを要求するとそのときだけ実際のストリーミングが発生します したがって、youtubeまたはvimeoの「ビデオ」は、httpサーバーによってhttp(s)で提供されるhtmlページでホストされていますが、それらのページに埋め込まれたビデオプレーヤー(ビデオが実際に再生される場所)であると想定していますストリーミングサーバーへの2番目の接続を実際に開始しており、rtspまたはその他の非httpプロトコルを介してストリーミングが行われている それが私の理解です、そして私が最初に私が上で述べた何かが間違っているなら私を訂正することから始めてくださいと私は最初に尋ねると思います!私は多かれ少なかれ正しいと仮定します:htmlページ内で実行され、htmlサーバーによって提供されるストリーミングメディアプレーヤーは、どのようにして(rtspリクエストを処理する)ストリーミングメディアサーバーとのストリーミング(rtspなど)接続を確立しますか?
回答: ここにすばやく汚い答えがありますwebでビデオを再生することと実際にリアルタイムでストリーミングすることには違いがあります。再生は、webページに含まれているプレーヤーによって行われます(flash、js、またはhtml5ビデオオブジェクトを使用している可能性があります)。クライアント(ブラウザ)がこのプレーヤーをダウンロードして実行します。次に、プレーヤーは単純なダウンロードurlからビデオを取得します。実際には、youtubeを使用していても、ホストされているビデオファイルに直接アクセスして、他のファイルと同じようにダウンロードできるプログラムがあります。システムは通常の古いダウンロードリンクを使用するため、rtspなどの複雑なストリーミングプロトコルは必要ありません。リアルタイムストリーミング(たとえば、webカメラから)は、ややこしいです。 flashにはこの機能が組み込まれていますが、今後は使用しないでください。 html5ビデオはリアルタイムストリーミングをサポートしていませんが、ファイルホスティングサーバーが提供するビデオファイルを常に変更することにより、人々はそれを「だます」ことができました。