2011-05-24 278 views
1

我的iPhone应用程序使用FFMPeg解码/播放音频文件。转换时间以微秒为单位分秒

我成功地从适当的FFMPeg函数获取当前时间(微秒),但我无法将其转换为分钟和秒(MM:SS)。

这是我的代码,显示包含时间的NSString; getFFMPEGtime是在微秒时间:

self.currentAudioTime = [NSString stringWithFormat: @"%02d:%02d", 
           (int) getFFMPEGtime/(int)1000000, 
           (int) getFFMPEGtime % 1000000]; 

看来,在几分钟的时间还好,但是秒搞砸。将微秒转换为几分钟和几秒钟的正确方法是什么?

回答

4

我认为你在几秒钟内的时间可能是正确的,你在几分钟内的时间很可能是错误的。

(int) getFFMPEGtime/(int)1000000是给你总

要获得MM:SS,你需要做到以下几点:

self.currentAudioTime = [NSString stringWithFormat: @"%02d:%02d", 
           (int) getFFMPEGtime/(int)60000000, 
           (int) ((getFFMPEGtime % 60000000)/1000000)]; 
+0

嗯,我不认为第二操作是正确的 – sidyll 2011-05-24 17:18:22

+0

感谢布莱恩,但它没有工作。我在分钟和秒钟得到负面时间,秒钟的时间正在减少。 – Winston 2011-05-24 17:19:29

+0

@sidyll:你说得对,我工作得太快了...... – 2011-05-24 17:37:08

1

这是数学,如果你有微秒,一分钟有60秒,分你的号码达60000000,你有你的分钟。

把你的数字除以60e6的余数以微秒为单位,所以除以1e6得到秒数。

实施例:

鉴于123456789微秒,您有:

  1. 123456789/60e6 = 2分钟
  2. ((123456789%60e6)/ 1E6)= 3.45秒
5

代码:

int microseconds = 59434225; 
int seconds = microseconds/1000000; 
NSString * result = [NSString stringWithFormat:@"%02d:%02d",seconds/60,seconds%60]; 

输出:

63434225 -> 01:03 
59434225 -> 00:59 
+0

+1,这是@Brian Driscoll – sidyll 2011-05-24 17:19:19