gpt4 book ai didi

ios - AVAudioPlayer 初始化与 web URL 崩溃

转载 作者:行者123 更新时间:2023-11-28 21:30:37 25 4
gpt4 key购买 nike

我在服务器上有一个声音文件,我尝试在设备上播放它。

使用这段代码:

NSURL audioURL = [NSURL URLWithString:@"http://..."];
NSError *error;
AVAudioPlayer *audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:audioURL error:&error]

因错误而崩溃:

Description of exception being thrown: '-[NSTaggedPointerString getCharacters:range:]: Range {0, 12} out of bounds; string length 5

该 url 的长度为 73

首先,为什么它会崩溃而不是填充我的 error 对象?

如果我使用这段代码:

NSURL audioURL = [NSURL URLWithString:@"http://..."];
NSData *audioData = [NSData dataWithContentsOfURL:audioURL];
NSError *error;
AVAudioPlayer *audioPlayer = [[AVAudioPlayer alloc] initWithData:audioData error:&error]

有效。

看方法的名称,看起来它们做的是同一件事,那么为什么第一个方法不起作用?阅读 AVAudioPlayer init 方法的文档没有发现与此问题相关的任何内容。

最佳答案

您正在流式传输您的音频文件吗?AVAudioPlayer 无法从 URL 流式传输。您可以将它与存储在设备上的文件一起使用。如果你想从 URL 流式传输你的文件,你需要使用 AVPlayer以下代码:

AVPlayerItem *item = [AVPlayerItem playerItemWithURL: audioURL];
AVPlayer *myAVPlayer = [AVPlayer playerWithPlayerItem: item];

编辑

当您要使用带有 URL 的 AVAudioPlayer 时,您需要像这样显示您的 URL:

NSString *backgroundMusicPath = [[NSBundle mainBundle] pathForResource:@"myMusic" ofType:@"mp3"];
NSURL *backgroundMusicURL = [NSURL fileURLWithPath:backgroundMusicPath];

取自here

希望对你有帮助

关于ios - AVAudioPlayer 初始化与 web URL 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36217284/

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