0

(对不起,我的英语很怪,我来自洛杉矶)我正在尝试在 VB6.0 中完成一个转码过程,我正在使用 ffmpeg,它是一个非常好的转码器,以完成我想要一个进度条的项目转码过程,但它非常难,首先我需要了解,如果我有输入,程序如何计算该过程的剩余时间

  • 平均比特率
  • 帧率
  • 开始文件大小。

我正在尝试:文件大小(KB)/平均比特率 Kb/s。

理论上这必须工作,但计算的时间比实际处理的时间要小得多。有人对此有任何想法,计算转码过程中剩余时间的公式(截断)是什么。在这个美妙的网络中,我找到了很多关于我的项目的答案..

4

2 回答 2

1

比特率不会帮助您计算进度。

如果你有以秒为单位的文件长度和帧速率,并且 ffmpeg 输出它现在处理的帧,你可以计算出大概的时间。

于 2010-01-18T21:10:35.900 回答
0

给出“剩余时间”的一般解决方案:

  • 一个数字total_units,表示要处理的大小、单元数等
  • 一个数字units_processed,表示到目前为止已经处理了多少个M
  • 一个数字 start_seconds,它给出了自操作开始以来的时间,以秒为单位

是:

seconds_elapsed = current time - start time
seconds_per_unit = seconds_elapsed / units_processed
units_left = total_units - units_processed
seconds_remaining = unit_left / seconds_per_unit

当处理每个单元的时间几乎相同时,或者至少当时间/单元与经过的时间几乎没有相关性时,该算法的效果最好。如果时间/单位随经过的时间而变化,它会在冰上发臭。

于 2010-01-18T21:12:43.227 回答