1

我正在研究AVAudioPlayer但我很困惑

  • currentTime,
  • deviceCurrentTime, 和
  • -playAtTime:

任何人都可以用一些示例代码来解释吗?

4

2 回答 2

4

一旦 AVAudioPlayer 被初始化,“duration”就是声音或音乐文件的长度,以秒为单位。

“currentTime”是音乐文件中从开始算起的位置,以秒为单位。您可以在播放音乐时读取 currentTime,它会告诉您音乐播放了多远。您可以在播放声音时随时设置 currentTime,它会立即从更改的时间开始播放。例如跳过 10 秒,只需写

myAudioPlayer.currentTime += 10.0;

您可以在音频播放器暂停或未启动时设置 currentTime,这会改变音乐中下一个“播放”命令将播放的位置。

“currentDeviceTime”是完全不同的东西,它与“playAtTime”一起使用可以让你在你想要的时候开始播放,或者同时开始两个声音。

最好想象一下您手机的扬声器有一个内置时钟,它返回的时间可能与您的正常时钟不同。“currentDeviceTime”根据扬声器的时钟返回当前时间。如果你打电话

[myAudioPlayer startPlayAt:myAudioPlayer.currentDeviceTime + 10.0];

一个“播放”命令将在十秒后开始。currentDeviceTime 与您的音乐文件无关,它只是一个时钟。天知道为什么 Apple 不只是使用例如 dispatch_time_t ,它应该工作得很好。

于 2015-05-09T14:59:04.970 回答
2

currentTime是设置玩家当前时间的属性。所以播放器将从那时开始播放您的音频。

deviceCurrentTime是为播放器播放或暂停获取时间的属性。如果您有两个玩家正在播放或暂停(未停止),那么设备时间将增加,直到两个玩家都停止。如果任何一个正在播放或暂停设备时间将会增加。

playAtTime是一种异步播放声音的方法,从音频输出设备时间线中的指定点开始。

有关这方面的更多讨论,请参阅 Apple Document for AVAudioPlayer,您将对这三个方面有更好的了解。

于 2012-05-22T06:55:06.517 回答