ライブ ソースから WMV ファイル (WMV1 圧縮を使用) にビデオを記録するソフトウェアを開発しています。
ストレージ ハード ドライブの空き容量に基づいて、残りの録音時間の概算を提供しようとしています。残念ながら、出力ファイル サイズを単純にコーデックのビット レートに基づいて決定することはできません。ビデオ圧縮は、画像の複雑さによって出力サイズが大幅に変わることを意味するからです。
何かご意見は?
参考までに、C# と DirectShow を使用しています。
ライブ ソースから WMV ファイル (WMV1 圧縮を使用) にビデオを記録するソフトウェアを開発しています。
ストレージ ハード ドライブの空き容量に基づいて、残りの録音時間の概算を提供しようとしています。残念ながら、出力ファイル サイズを単純にコーデックのビット レートに基づいて決定することはできません。ビデオ圧縮は、画像の複雑さによって出力サイズが大幅に変わることを意味するからです。
何かご意見は?
参考までに、C# と DirectShow を使用しています。
これは本当に良い質問です。残念ながら、これを確実に行う方法はありませんが、2つの基本的なオプションがあります。
オプション1は、すばやく簡単に開始する方法です。オプション2にはもう少しプログラミングが必要ですが、見積もりは大幅に正確になります。結局のところ、これらのインスタンスでの圧縮は、記録しているものに基づいています。緑色の画面を1時間記録すると、前景が連続的に変化する移動する背景やフラクタルシーケンスを記録するよりも、ディスクの使用量が大幅に少なくなります。事前に適切な見積もりを行う方法はありません。
最後の x 秒間に受信した圧縮率を使用して、将来の圧縮サイズを推定することしかできません。値が大きすぎたり、小さすぎたりしないでください。
時間が短すぎると、[ビデオの動きの量に応じて] 時間が大幅に変化する可能性があり、時間が長すぎると、時間が非常に不正確になります。
30 秒あれば妥当な精度が得られると思います。