1

live555初心者です。

自宅の LAN の背後にある Windows 7 (64 ビット) マシンから、エンコーダとして ffmpeg を使用して、WAN 経由のデータ センター内の Debian 64 ビット Linux マシンで実行されている live555 サーバーに Web カメラをストリーミングしたいと考えています。ffmpeg から H.264 RTP/UDP ストリームを送信したいのですが、「testOnDemandRTSPServer」はそれに接続するクライアントに RTSP ストリームを送信する必要があります。

UDPデータをポート1234、IPアドレスAA.BB.CC.DDに送信する次のffmpegコマンドを使用しています

.\ffmpeg.exe -f dshow -i video="Webcam C170":audio="Microphone (3- Webcam C170)" -an 
 -vcodec libx264 -f mpegts udp://AA.BB.CC.DD:1234

Linux サーバーでは、ポート 5555 で testOnDemandRTSPServer を実行しています。これは、AA:BB:CC:DD:1234 からの生の UDP データを期待しています。を使用してVLCでrtspストリームを開こうとしますrtsp://AA.BB.CC.DD:5555/mpeg2TransportStreamFromUDPSourceTest

しかし、VLCでは何も得られません。私は何を間違っていますか?どうすれば修正できますか?

4

3 に答える 3

0

VLC のロギング詳細レベルを 2 に上げてみてください。VLC はインバンド パラメータ セットを想定しています。この場合、メッセージ ウィンドウにパラメータ セットを待機しているというデバッグ メッセージが出力されます。の SDP にパラメータ セットがあるだけでRTSP DESCRIBEは不十分です。IIRC では、パラメータ セットを定期的に、または少なくとも IDR フレームごとに出力するように x264 を構成できます。

他に試すことができること: VLC を使用する前に、openRTSP でストリームをテストできます。オプションを使用すると、openRTSP -d 5 -Q rtsp://xxx.xxx.xxx.xxx:5555/mpeg2TransportStreamFromUDPSourceTestopenRTSP は 5 秒間のストリーミング後に品質統計を出力します。次に、testOnDemandRTSPServer が実際にストリームを中継していること、および ffmpeg アプリケーションと testOnDemandRTSPServer の間に問題がないことを確認できます。

于 2014-06-16T18:56:27.597 に答える
0

別のストリームを試しましたか?また、ファイアウォールの問題が原因で同様の問題が発生しました。これらのポートを介して実際にデータをストリーミングできることを確認することをお勧めします。

同期バイトが欠落している場合は、おそらくストリームの問題です。別のデータ ソースを使用してみて、問題が解決するかどうかを確認してください。.avi ファイルまたは .mp4 ファイルを試してください。通常、.mp4 ファイルは簡単にストリーミングできます。ストリーミングが mpegts ファイルではなく .mp4 ファイルで機能する場合は、ファイルに問題があります。個別のチャンクをストリーミングします。

この作業を最後に行ってから 2 年以上経ちますので、何かありましたらお知らせください。

于 2014-06-18T12:27:14.143 に答える
0

私が覚えていることから、DeviceSource クラスを作成するのは簡単ではありませんでした。あなたが説明している問題は、間違いなく live555 メーリング リストで非常に頻繁に議論されているものです。やりたい場合は、できるだけ早くリストへの承認を得る必要があります。 rtsp 開発に関連するもの。

あなたが抱えていると思われる問題は、いくつかのビデオフォーマットがストリーミングを念頭に置いて書かれているという事実に関連しています.rtspサーバーは特定のフォーマットを簡単にストリーミングできます.フレーム境界が終了する場所。使用できる最も簡単なソリューションは、カメラの SDK を入手し、それを使用してカメラからデータを要求することです。カメラからのデータにアクセスできるようにするさまざまなライブラリとツールキットが多数あります。そのうちの 1 つが DirectX SDK です。カメラ データを取得したら、ストリーミング可能な形式にエンコードする必要があります。DirectX を使用して生のカメラ フレームを取得し、ffmpeg (libavcodec、libavformat) を使用してそれを mp4 / h264 フレーム データに変換できる場合があります。

エンコードされたフレーム データを取得したら、それを DeviceSource クラスにフィードすると、データのストリーミングが処理されます。コードが手元にあればよかったのですが、一般的なアルゴリズムは live555 の Web サイトに文書化されていますが、NDA によって敷地内からコードを削除しないように拘束されていたので、ここで説明することができます。

これでもう少し幸運が訪れることを願っています。行き詰まった場合は、質問にコードを追加することを忘れないでください。現在、元の計画 (ファイルを VLC にストリーム配信) の機能を妨げている唯一のものは、ストリーム配信するために選択したファイル形式です。

于 2014-06-18T12:51:49.313 に答える