iOS6 AVAudioPlayer - AAC音频文件持续时间始终返回0

时间:2012-11-21 16:26:23

标签: iphone ios6 avaudioplayer

我正在将一个与aac音频文件一起移植到iOS6的应用程序移植,我发现了一个奇怪的行为,当我尝试获取(有效)aac音频文件的持续时间时,它总是返回0,在iOS4中iOS5它工作正常。

¿AvAudioPlayer类是否存在影响持续时间属性的错误?我已经阅读了 currentTime 属性的一些问题。

以下是代码:

NSURL* urlFichero = [NSURL fileURLWithPath:rutaFichero];
avaPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL: urlFichero error:nil];
segundos = avaPlayer.duration;
NSLog(@"[ControladorFicheros] Fichero: '%@' Duración: '%f'", nombreFichero, segundos);
[avaPlayer stop];
[avaPlayer release];

谢谢;)

2 个答案:

答案 0 :(得分:3)

最后问题是,在API的最新版本中,AVAudioPlayer似乎只在文件准备播放时才返回文件的正确持续时间,这就是为什么我的解决方案错误,正确的方法来获取持续时间文件(以秒为单位)如果您不想重现它:

AVURLAsset *asset = [[[AVURLAsset alloc] initWithURL:anURI_ToResource 
                  options:[NSDictionary dictionaryWithObjectsAndKeys:
                  [NSNumber numberWithBool:YES], 
                  AVURLAssetPreferPreciseDurationAndTimingKey,
                  nil]] autorelease];

 NSTimeInterval durationInSeconds = 0.0;
if (asset) 
     durationInSeconds = CMTimeGetSeconds(asset.duration) ;

答案 1 :(得分:1)

我注意到了同样的问题。我的解决方案是使用。

MPMoviePlayerController *testPlayer = [[MPMoviePlayerController alloc] initWithContentURL:filePath];
[testPlater prepareToPlay];
[testPlater play];