我正在开发一个软件,该软件将视频从实时源到WMV文件(使用WMV1压缩)记录。

我试图根据存储硬盘驱动器上剩余的空间来对剩余的记录时间进行粗略的估计。不幸的是,我不能简单地将输出文件大小基于编解码器的比特率,因为视频压缩意味着输出大小根据图像的复杂性而巨大变化。

有什么想法吗?

仅供参考,我正在使用C#和DirectShow。

有帮助吗?

解决方案

这是一个非常好的问题。不幸的是,没有肯定的方法可以做到这一点,但是您有两个基本选择:

  1. 根据实验或编解码器提供商的数据,提前计算给定比特率的每个给定时间单元使用的平均空间。
  2. 首先使用Technique#1,但还创建了一种机制来确定在给定记录期间使用的平均空间,通过将文件当前使用的空间从总记录时间中划分。然后,使用此指标确定剩余的时间。

选项1是一种快速简便的入门方法。选项2需要更多的编程,但是您的估计将更加准确。毕竟,在这些情况下,压缩是基于您录制的内容。与记录带有不断变化的前景或分形序列的移动背景相比,记录绿色屏幕1小时的磁盘要少得多。没有办法提前做出良好的估计。

其他提示

您只能使用最近X秒内收到的压缩率来估计未来的压缩尺寸。没有太大的价值,也没有太小。

太小的时间段将意味着时间可能会发生巨大变化(取决于视频中的运动量),时间太长意味着时间将非常不清楚。

我猜想有30秒的时间可以提供合理的准确性

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top