1

ビデオストリーマーのようなアプリケーションを作成しています.クライアントはudpソケットを使用してビデオストリームを受信して​​います.ストリームを受信して​​いるので、同時に再生したい.ハードディスクにあるローカルビデオファイルの再生とは異なります.その場合、system("vlc filename") を使用してファイルを実行するのと同じくらい簡単です。しかし、ここでは、受信に遅延が発生したり、プレイヤーが着信データを待たなければならないなど、多くの問題が関係しています。 vlc を使用してビデオ ストリームを実行する方法について。vlc を使用してストリームを再生する手順を詳しく教えてください。アプリケーションを C++ で実装しています。

編集:特定のビデオを特定の宛先にストリーミングし、そのストリームを受信して​​再生するために使用できる VLC API に関するアイデアを教えてください。

よろしく、マウィア

4

2 に答える 2

2

VideoLan 自身のホームページをいつでも見ることができます。 それ以外は、ストリーミングは非常に簡単です。

  1. ストリーミングをサポートするビデオ コーデックを決定します。(わかりました。おそらくすでに完了しています)
  2. 適切なパケット サイズを選択します。
  3. 適切なビデオ品質を選択します。
  4. クライアント側: 少なくとも 2 秒のビデオとオーディオを事前にバッファリングします。

数字の 2 と 3 は奇妙に聞こえますが、考える価値があります。

ブロードバンド接続がある場合は、大きなパケットをクライアントに送り込む余裕があります。注: ここでのパケットとは、クライアントがビデオの次のビットを完全にデコードするために必要なデータの一貫した単位を意味します。大きなパケット、たとえば 4 秒のビデオを送信すると、完全な 4 秒の完全なデータ ユニットを待機するため遅延のリスクがありますが、0.5 秒の小さなパケットでは遅延が発生しますが、それでも認識可能で比較的滑らかなビデオが悪い繋がり。

品質についても同様です。ピクセル化されたアーティファクトの多いビデオは悪く、ビデオのカクつき/サウンドの非同期ビデオはさらに悪いものです。むしろ、低品質/高圧縮設定に切り替えます。

あなたの質問が純粋にそれを完成させる部分に関するものである場合は、ポイント1と4で十分です。

「リアルタイム ライブ ビデオを実行したい場合は?」と尋ねるかもしれません。上記のアドバイスはすべて当てはまりますが、すべてをより賢く行う必要があります。まず最初に: 接続が悪いとリアルタイムでは実行できません。それは現実のことです。接続が十分に太い場合は、ほぼリアルタイムに到達できます。多くの処理やバッファリングをまったく行わずに、各画像と小さなサウンド サンプルを送り出すだけです。そこから優れたクライアント エクスペリエンスを得ることができますが、そのような接続はほとんどありません。ここでの秘訣は、通常、接続が理論的に許容するよりもわずかに低いビデオ品質を送信し、そこでキャッシングとパケットの並べ替えを小刻みに行うことです...楽しんでください。それは難しい。

于 2010-05-30T21:21:36.577 に答える
0

残念ながら、vlc が実際に持っている唯一の API は、コマンド ラインまたはコマンド ラインと同等のものです (プレイヤー インスタンスを起動して、基本的にコマンド ラインにあるものを渡すことができます)。複数のインスタンスまたはコールバックが必要な場合は libvlc を使用できますが、それでもかなり不透明です...

于 2010-08-01T02:41:00.720 に答える