AVAudioPlayer持续时间与音频文件的实际持续时间不匹配

时间:2013-05-11 09:42:39

标签: iphone ios avaudioplayer

我正在连接2​​个音频文件。然后我通过AVAudioPlayer播放该音频文件。连接文件播放完美。但是,当我想获得audioPlayer的持续时间时,它显示错误的持续时间,2秒。但我的连锁音频文件的实际持续时间是7秒。问题出在哪儿?在此先感谢您的帮助。

-(void)playAudio{

part1 = [NSMutableData dataWithContentsOfFile: [[NSBundle mainBundle] pathForResource:@"Mumu night its getting dark" ofType: @"mp3"]];

part2 = [NSMutableData dataWithContentsOfFile: [[NSBundle mainBundle] pathForResource:@"Mumu night did you study" ofType: @"mp3"]];

[part1 appendData: part2];

audioPlayer=[[AVAudioPlayer alloc] initWithData:part1 error:NULL];

audioPlayer.delegate = self;

[audioPlayer play];

duration = (int)audioPlayer.duration;

NSLog(@"audio duration: %d", duration);

}

2 个答案:

答案 0 :(得分:0)

在获得持续时间之前尝试调用 player.prepareToPlay()。它会向您显示更准确的持续时间。

为了完全准确,请尝试:

CMTimeGetSeconds(AVURLAsset.init(url: myURL, options: nil).duration)

答案 1 :(得分:-1)

你应该使用这个

https://developer.apple.com/documentation/avfoundation/avasynchronouskeyvalueloading/1387321-loadvaluesasynchronously

在示例中只需将“commonMetadata”更改为“duration”。