これは iOS 6 では正常に機能していましたが、iOS 7 では、AVAssetExportSession を使用して曲の一部をファイルにエクスポートした後、エクスポートされたファイルのデュレーションが AVAudioPlayer では正しくなく、AVURLAsset では正しくなります。
AVAudioPlayer は、デュレーションを曲全体のデュレーションとして誤って報告します。
https://developer.apple.com/library/ios/qa/qa1730/_index.htmlの手順を使用してファイルをエクスポートしています
以下のように期間を確認します。
AVURLAsset* audioAsset = [AVURLAsset URLAssetWithURL:outputURL options:nil];
CMTime audioDuration = audioAsset.duration; // shows correct
と
AVAudioPlayer* avAudioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:outputURL error:nil];
NSTimeInterval duration = avAudioPlayer.duration; // shows wrong
興味深いことに、エクスポートしたファイルを iTunes で再生すると、間違った (全体の) デュレーションも表示されます。
この問題を解決する方法がわかりません。これはiOS7のバグでしょうか?