繁体   English   中英

AVAudioPlayer 时长与音频文件的实际时长不匹配

[英]AVAudioPlayer duration is not matching with the actual duration of audio file

我正在连接 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);

}

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

为了完全准确,请尝试:

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

你应该用这个

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM