IPカメラ(Basler BIP-1280c)からビデオストリームを読み込もうとしています。 私が持っていたいストリームはカメラのバッファに保存され、長さは40秒でMJPEGでデコードされます。IPカメラからのMJPEGビデオが速すぎる
私のWebブラウザからストリームにアクセスすると、問題なく40秒間表示されます。 しかし、実際にはストリームをダウンロードして保存することができるアプリケーションが必要です。
カメラにはhttpでアクセスしていますので、libcurl
を使用してアクセスしています。これは正常に動作し、私はまた、問題なくストリームをダウンロードすることができます。ストリームデータを* .aviファイルに保存することを選択しました(正しいことを願っています...?)。
しかし、私はビデオを開いて(Totem Video PlayerとVLCで試してみました)、録画されたものをすべて見ることができますが、速すぎます。ビデオ全体は5秒(40の代わりに)のように続きます。ヘッダーにMJPEGの中にビデオの長さやfpsのような情報を入れるものがありますか?私はビデオプレーヤーにとって欠かすことのできる情報があるはずなので、速く再生することを意味します。
更新:
の回答で示唆したように、私は、バイナリエディタでファイルを開いて、私が見つけたこのでした:
--myboundary..Content-Type: image/jpeg..Content-Length: 39050.........*Exif..II*...............V...........................2...................0210................FrameNr=000398732 6.AOI=(0800x0720)@(0240,0060)/(1280x0720).Motion=00000 (no) [00000 | 00000 | 00000 | 00000 | 00000].Alarm=0000 (no) .IO =000.RtTrigger=0...Basler..BIP2-1280c..1970:01:05 23:08:10.8 98286......JFIF.....
。 ............................ ....&"((
このヘッダーは、ファイル全体に(2進データの多くのバイトが続きます)ファイル内に再現されます。これは実際には大丈夫です。カメラのマニュアルでは、すべてのMJPEGピクチャがこのヘッダを取得していることがわかります。
さらに興味深いのは、最後の行にあるJFIF
です。提案された答えと同様に、これはおそらくファイルフォーマットの指標です。しかしafaik JFIFはjpgのような単一の画像フォーマットです。それで、これは、ビデオファイル全体がちょうど "脳のない"連鎖した画像であることを意味するでしょうか?私のプレイヤーは、フレームレートについて何も知らなくても、次々とこの写真を表示することを前提としていますか?
aviファイル用に指定したフレームレート値を確認してください。あなたがaviに書き込んだフレーム数を計算し、40秒間にそれらをすべて再生するためにフレームレートを計算する必要があるものを計算します。 –
'AVI'コンテナが壊れています(画像はおそらく良いですが、タイムスタンプはありません)。ファイル形式のオプションが他にもある場合は、おそらく別の方法を試してみてください。 1ファイルあたりのフレームレートが固定されたAVIは、IPカメラストリームには適していません。 –
しかし、私は実際にはファイル形式を選択できません。私はちょうどストリームデータにアクセスすることができますし、ファイルにダンプする必要があります。だから私はデータが格納されているように影響を与えない、私はちょうどファイル拡張子を選択することができます。 – Toby