IPカメラ(Basler BIP-1280c)からビデオストリームを読み込もうとしています。必要なストリームはカメラのバッファーに保存され、長さは40秒で、MJPEGでデコードされます。
これで、Webブラウザーを介してストリームにアクセスすると、問題なく40秒が表示されます。しかし、実際には、ストリームを単独でダウンロードして保存できるアプリケーションが必要です。
カメラはhttp経由でアクセスされるので、私はlibcurl
それにアクセスするために使用しています。これは問題なく動作し、問題なくストリームをダウンロードすることもできます。ストリームデータを*.aviファイルに保存することを選択しました(それが正しいことを願っています…?)。
しかし、ここで問題が発生しました。ビデオを開いて(Totem Video PlayerとVLCで試してみました)、記録されたものをすべて表示することもできますが、速度が速すぎます。ビデオ全体は(40秒ではなく)5秒ほど続きます。MJPEGのヘッダーには、ビデオの合計の長さやfpsなどの情報を入れる場所がありますか?つまり、ビデオプレーヤーが高速で再生できるように、いくつかの情報が不足している必要がありますか?
アップデート:
回答で示唆されているように、私は16進エディタでファイルを開きましたが、見つけたのは次のとおりです。
--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.....
。............................ ....&"((
このヘッダーはファイル全体で繰り返されます(その後に大量のバイナリデータが続きます)。すべてのMJPEG画像がこのヘッダーを取得することをカメラのマニュアルで読んだので、これは実際には問題ありません。
JFIF
最後の行のより興味深いイン。提案された回答のように、これはおそらくファイル形式の指標です。ただし、afaik JFIFは、jpgと同じように単一の画像形式です。それで、これはおそらく、ビデオファイル全体が単なる「頭の悪い」連鎖写真であることを意味するのでしょうか?そして、私のプレーヤーは、フレームレートについての知識がなくても、この写真を次々に表示する必要があると思い込んでいますか?