我正在将一个与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];
谢谢;)
答案 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];