【问题标题】:How to get duration (HH:MM:SS) from AVAudioPlayer in iPhone?如何从 iPhone 中的 AVAudioPlayer 获取持续时间(HH:MM:SS)?
【发布时间】:2012-11-07 07:21:28
【问题描述】:

dur目前我正在使用 iPhone 应用程序,使用AVAudioPlayer 在我的应用程序中播放音频文件,然后从AVAudioPlayer 获取持续时间值。

我得到的持续时间值如下:252.765442。

但我想要HH/MM/SS 02:52:76

如何转换,请帮助我

提前致谢..

我试过了:

audioPlayer =  [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:tempFilePath] error:&err];
    [audioPlayer setDelegate:self];
    [audioPlayer prepareToPlay];

    float duration = (float)audioPlayer.duration;
    NSLog(@"duration:%f",duration);

【问题讨论】:

  • 现在叫勺子喂食...

标签: iphone avaudioplayer duration


【解决方案1】:

你也可以试试,

    // Say you get the duration from AVAudioPlayer *p;
    NSString *dur = [NSString stringWithFormat:@"%02d:%02d", (int)((int)(p.duration)) / 60, (int)((int)(p.duration)) % 60];

正如@Victor John 所说,在 Swift 中,

    String(format: "%02d:%02d", ((Int)((audioPlayer?.currentTime)!)) / 60, ((Int)((audioPlayer?.currentTime)!)) % 60)

【讨论】:

  • 一种更简单的方法,但在几分钟和几秒钟内非常有效。
  • 非常感谢。它是如此简单和有效。它在 Swift 中的代码像这样String(format: "%02d:%02d", ((Int)((audioPlayer?.currentTime)!)) / 60, ((Int)((audioPlayer?.currentTime)!)) % 60)
【解决方案2】:
NSTimeInterval theTimeInterval = audioPlayer.duration;
 // Get the system calendar
NSCalendar *sysCalendar = [NSCalendar currentCalendar];

// Create the NSDates
NSDate *date1 = [[NSDate alloc] init];
NSDate *date2 = [[NSDate alloc] initWithTimeInterval:theTimeInterval sinceDate:date1];
// Get conversion to hours, minutes, seconds
unsigned int unitFlags = NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit;
NSDateComponents *breakdownInfo = [sysCalendar components:unitFlags fromDate:date1  toDate:date2  options:0];
NSLog(@"%02d:%02d:%02d", [breakdownInfo hour], [breakdownInfo minute], [breakdownInfo second]);
[date1 release];
[date2 release];

【讨论】:

  • 持续时间 252.765442,然后我尝试了你的方法,但得到了字符串:05:34:12,它错了
  • @Mnu,您可能需要转换为毫秒。让我检查一下。
  • 我想要秒数的小时和分钟(audioPlayer.duration)。
  • 没问题。如果你想以objective c方式做,你可以使用这个。
  • @Mnu,在这里看到了一些 cmets。我不明白这里发生了什么。如果您认为我的答案是正确的(您的问题是以 02:52:76 格式得到它,我可以看到只有在我的答案中它以该格式存在),尤其是在我得到正确答案之后,您没有担心选择我的作为正确答案。无论如何,由您决定答案的有用性。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-07-13
  • 1970-01-01
  • 2010-11-17
  • 1970-01-01
  • 2011-11-05
  • 2021-12-27
  • 1970-01-01
相关资源
最近更新 更多