2

我正在开发一款将视频从实时源录制到 WMV 文件的软件(使用 WMV1 压缩)。

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

有什么想法吗?

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

4

2 回答 2

1

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

  1. 根据实验或来自编解码器提供商的数据,提前计算给定比特率下每个给定时间单位使用的平均空间。
  2. 首先使用技术#1,然后创建一种机制来确定给定录制期间使用的平均空间,方法是将当前使用的空间除以文件的总录制时间。然后,使用此指标来确定剩余时间。

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

于 2010-01-07T15:21:03.493 回答
0

您只能使用最近 x 秒内收到的压缩率来估计未来的压缩大小。值不要太大,也不要太小。

时间太短意味着时间可能会发生巨大变化[取决于视频中的运动量],时间太长意味着时间将非常不准确。

我猜 30 秒的时间可以提供合理的准确度

于 2010-01-07T15:48:17.980 回答