2016-10-17 7 views
1

私はemguを使用して、非圧縮ビデオを保存しています。 VideoWriter("video.avi", 0, (int)FrameRate, frameSize, true);0の値は、保存されたビデオが圧縮解除されることを意味します。hereを参照してください。また、FrameRate awsを30に設定します。 Matファイルは、var mat = new Mat(480, 640, Emgu.CV.CvEnum.DepthType.Cv8U, 3)です。 13994フレームの保存ビデオの場合、プロパティウィンドウには9.29 GB (6,449,164,288 bytes)(windows)と表示されます。今すぐビデオサイズを手動で確認しようとしています:手動でビデオサイズを計算する

640*480*3*13994= 12,896,870,400 bytes、そのウィンドウプロパティが2回返されます。

これにいくつか光を当ててください。

MediaInfoを情報

General 
Complete name       : name.avi 
Format         : AVI 
Format/Info        : Audio Video Interleave 
Format profile       : OpenDML 
File size        : 6.01 GiB 
Duration         : 7 min 46 s 
Overall bit rate       : 111 Mb/s 
Writing application      : Lavf56.36.100 

Video 
ID          : 0 
Format         : YUV 
Codec ID         : I420 
Codec ID/Info       : 8 bit Y plane followed by 8 bit 2x2 subsampled U and V planes. 
Duration         : 7 min 46 s 
Bit rate         : 111 Mb/s 
Width         : 640 pixels 
Height         : 480 pixels 
Display aspect ratio      : 4:3 
Frame rate        : 30.000 FPS 
Compression mode       : Lossless 
Bits/(Pixel*Frame)      : 12.000 
Stream size        : 6.01 GiB (100%) 

感謝します。

+0

ビデオコーデック、ビットレート、フレームレート、ビデオトラックサイズ、オーディオトラックサイズなどの有用な情報を表示するには、** mediaInfo **のようなツールを使用してください。 –

+1

@ VC.One私は持っています要求された変更を行った、私はそれが今より有用であることを願っています。応答していただきありがとうございます。 – Thoth

答えて

1

今夜は正しく見ていきますが、ピクセルタイプが24ビットRGBであっても、emguがフレームあたり4バイト(32ビット整数)を使用しているかどうかを確認できますか?上記の式を使用して

Formula = Width * Height * 3 (rgb) * 21658 (frames) * 4 (ie: 32bit Int)/8 (bits per byte) 

私は

640 * 480 * 3 * 13994 * 4/8 = 6,448,435,200 

結果...近い番号を取得することができます:私はしたくなかったから、

on disk size : 6 449 164 288 bytes (Windows) 
calculated size : 6 448 435 200 bytes (Formula) 
remainder size :  729 088 bytes (possible AVI Header size as bytes?) 

当分の間だけで簡単に1ビットレートなどのようなものが含まれます。通常、ファイルサイズはビットレートを与えます。しかし、あなたの見積もりでは、ファイルが上になるまで実際のビットレートを知ることはできません。私はそれについて正しく考えることができるまで私の最高の推測です...

PS:MediaInfoはあなたにヘッダーサイズ最後の残りのサイズの番号を確認してください。

関連する問題