gpt4 book ai didi

ios - AVAudioPlayer 为音频文件返回错误的持续时间

转载 作者:行者123 更新时间:2023-12-03 02:10:36 24 4
gpt4 key购买 nike

我正在尝试在我的应用程序中播放音频文件,并且我想显示播放文件的进度。

文件完全播放,但我无法正确显示文件的持续时间。返回值远低于实际持续时间。例如,它为 4 秒的音频文件返回 1 秒,或为 41 秒的音频文件返回 9 秒。

请不要说它只在播放时返回正确的值,因为我也尝试过但没有。对于使用 AVAudioPlayer 的任何文件,我总是得到 1 秒的时间。持续时间方法,我尝试了解决方案here通过 AVURLAssets我得到那个奇怪的 9 秒而不是 41 秒!
AVAudioPlayer 还有另一个问题.它播放文件,但同时它的isPlaying方法返回 NO
我不知道这是否有任何区别,但我的音频文件是 AMR 文件。

非常感谢任何帮助。谢谢。

**** 更新:我尝试使用其他文件,它工作正常,所以现在,我需要获取 AMR 音频文件的持续时间 ****

最佳答案

下面的代码可以帮助您在 slider 上获得正确的进度

NSURL *soundFileURL = [NSURL fileURLWithPath:path];
NSError *error;
_audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:soundFileURL error:&error];
_sliderSong.maximumValue = _audioPlayer.duration; //_sliderSong is a UISlider property
_sliderSong.value = 0.0; //_audioPlayer is a AVAudioPlayer property
[NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(updateTime:) userInfo:nil repeats:YES];

if (error)
{
NSLog(@"Error in audioPlayer: %@",
[error localizedDescription]);
} else {
_audioPlayer.delegate = self;
[_audioPlayer prepareToPlay];
[_audioPlayer play];
}
}
- (IBAction)slide { //called when we drag the slider explicitly (we have to bind it with slider)
_audioPlayer.currentTime = _sliderSong.value;
}
- (void)updateTime:(NSTimer *)timer { //slider updation
_sliderSong.value = _audioPlayer.currentTime;
}

关于ios - AVAudioPlayer 为音频文件返回错误的持续时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24474969/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com