當我把音頻文件的持續時間與打前:音頻播放持續時間的變化而玩
audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error];
...
[audioPlayer prepareToPlay];
duration = audioPlayer.duration;
我得到的例如16.71s的持續時間。然後在播放時每0.2秒採樣一次,持續時間會改變。它每1.2至1.6秒更改爲:16.71s,17.02s,17.23s,17.33s,17.38s,17.43s,17.38s,17.29s,17.31s,然後在最後2.5秒停留在17.51s。所以它會上升和下降。
我在更新滑塊位置的方法中進行採樣,並顯示經過的時間和總持續時間。你可以想象看起來真的很奇怪,看看持續時間(這是整數截斷)在播放時從16到17。此外,滑塊位置將隨着所有漂移而關閉。
有沒有人有一個想法,爲什麼這是?
現在我們正在談論持續時間:有誰知道爲什麼audio player.duration
可以返回大約是[audioPlayer prepareToPlay]
被省略的實際持續時間的兩倍的值?
如果你運行它多次,是這些相同的數字,每次你得到什麼?還是他們改變了? – WendiKidd 2013-04-26 22:26:17
第一個值總是相同的:16,71s。之後的值每次都使用新的AVAudioPlayer播放。最終值也總是相同的:17.51s。但是當我用同一個音頻播放器重放時,所有的值都是17.51s。 – 2013-04-26 22:35:22
什麼類型的audiofile?如果它是用VBR(可變比特率)編碼的,則可能是audioplayer試圖估計文件的長度。 – batkuip 2013-04-26 22:45:47