通常、ベンダー提供のURLを使用してIPカメラから静止スナップショットを取得できます。しかし、この方法で配信されるJPEGは十分な品質ではなく、他のイメージ形式のスナップショットを提供する機能や、ロスレス圧縮を提供する機能はありません。IPカメラからのrtspビデオストリームからのスナップショット取得
VLCでカメラからrtsp h264ストリームを開き、手動でスクリーンショットを撮ると、以前に観察されたjpegアーチファクトが結果として得られませんでした。
問題は、どうすればh264ストリームからC++プログラムでこれらの優れたスナップショットを取得できますか?私は画像(注釈、クロッピング、顔認識)上で複数の操作を実行する必要がありますが、それらは可能な初期画像として高品質になった後に来なければなりません。
(これは私のprevious questionに関連していることに注意してください。私はCURLでJPEG画像を得たが、今、可能な場合、この新しいものとスナップショットゲッターを交換したいと思います。私は再びLinux上で実行しています、Fedoraの11)
私の理解が間違っている場合は訂正してください:RTSPクライアントを使用してSETUP要求を送信してから、PLAY要求を送信してください。メモリ上のいくつかのバッファにビデオを格納します。バッファ内にあるものを何らかのロスレスイメージフォーマットにデコードします。デコードされた画像からフレームを取得する。 DoStuff();バッファが再充填されると、繰り返します。 – Morpork
これは基本的には正しいですが、多くの詳細が省略されています。 JPEG over HTTPでは、要求を送信して全体を戻します。 RTSPにおいて、conentは、TCPまたはUDP、H.264 atを見つけるための複数のフォーマット記述子、元のH.264ビットストリームを得るためのデパケット化を介して供給されてもよい。ロケット科学ではありませんが、JPEGスナップショットの場合ほど単純ではありません。 –