我正在研究AVAudioPlayer但我很困惑
currentTime
,deviceCurrentTime
, 和-playAtTime:
任何人都可以用一些示例代码来解释吗?
一旦 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 ,它应该工作得很好。
currentTime
是设置玩家当前时间的属性。所以播放器将从那时开始播放您的音频。
deviceCurrentTime
是为播放器播放或暂停获取时间的属性。如果您有两个玩家正在播放或暂停(未停止),那么设备时间将增加,直到两个玩家都停止。如果任何一个正在播放或暂停设备时间将会增加。
playAtTime
是一种异步播放声音的方法,从音频输出设备时间线中的指定点开始。
有关这方面的更多讨论,请参阅 Apple Document for AVAudioPlayer,您将对这三个方面有更好的了解。