我正在开发一款将视频从实时源录制到 WMV 文件的软件(使用 WMV1 压缩)。
我试图根据存储硬盘驱动器上的剩余空间粗略估计剩余的录制时间。不幸的是,我不能简单地将输出文件大小基于编解码器的比特率,因为视频压缩意味着输出大小会根据图像的复杂性而变化很大。
有什么想法吗?
仅供参考,我正在使用 C# 和 DirectShow。
我正在开发一款将视频从实时源录制到 WMV 文件的软件(使用 WMV1 压缩)。
我试图根据存储硬盘驱动器上的剩余空间粗略估计剩余的录制时间。不幸的是,我不能简单地将输出文件大小基于编解码器的比特率,因为视频压缩意味着输出大小会根据图像的复杂性而变化很大。
有什么想法吗?
仅供参考,我正在使用 C# 和 DirectShow。
这是一个非常好的问题。不幸的是,没有万无一失的方法可以做到这一点,但是您有两个基本选择:
选项 1 是一种快速简便的入门方式。选项 2 需要更多的编程,但您的估计会更加准确。毕竟,这些情况下的压缩是基于您正在录制的内容。与记录具有连续变化的前景或分形序列的移动背景相比,记录 1 小时的纯绿色屏幕占用的磁盘要少得多。没有办法提前做好估计。
您只能使用最近 x 秒内收到的压缩率来估计未来的压缩大小。值不要太大,也不要太小。
时间太短意味着时间可能会发生巨大变化[取决于视频中的运动量],时间太长意味着时间将非常不准确。
我猜 30 秒的时间可以提供合理的准确度