将时间(以微秒为单位)转换为分钟和秒

时间:2011-05-24 16:59:37

标签: objective-c cocoa-touch ios time ffmpeg

我的iPhone应用程序使用FFMPeg解码/播放音频文件。

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

这是我显示包含时间的NSString的代码; getFFMPEGtime是以微秒为单位的时间:

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

似乎以分钟为单位的时间是可以的,但秒数已经搞砸了。将微秒转换为分钟和秒的正确方法是什么?

3 个答案:

答案 0 :(得分:5)

代码:

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

输出:

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

答案 1 :(得分:4)

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

(int) getFFMPEGtime / (int)1000000总计

要获得MM:SS,您需要执行以下操作:

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

答案 2 :(得分:1)

这是数学,如果你有μs,一分钟有60s,你的数字除以60000000,你有你的分钟。

将你的数字除以60e6的余数以微秒为单位,因此除以1e6得到秒数。

示例:

鉴于123456789μs,您有:

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