gpt4 book ai didi

iPhone:AVAudioPlayer 不支持的文件类型

转载 作者:IT王子 更新时间:2023-10-29 07:53:47 25 4
gpt4 key购买 nike

我的应用程序从我们的服务器下载一个 mp3 并将其回放给用户。该文件是 64 kbps(如果我理解正确的话,这完全在 iPhone 的可接受范围内)。我已经在几十个网站上查找了如何执行此操作,他们都建议我这样做:

NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://.../file.mp3"]];
NSError *e = nil;
AVAudioPlayer *player = [[AVAudioPlayer alloc] initWithData:data error&e];
[player setDelegate:self];

当我运行代码时,播放器返回 null 并且出现此错误:

2011-02-04 10:44:46.176 MyApp[6052:207] Error loading audio: Error Domain=NSOSStatusErrorDomain Code=1954115647 "The operation couldn’t be completed. (OSStatus error 1954115647.)"
2011-02-04 10:44:49.647 MyApp[6052:207] unsupported file type

我已经检查了文件,我知道它可以工作。它在 Windows Media Player 上播放没有问题,在 Mac 上播放 Quicktime。我也已经将文件上传到 iPhone 模拟器,它播放没有任何问题。该文件很好,但由于某些原因 AVAudioPlayer 不喜欢它。

有什么我需要改变的吗? NSData 是否有某种设置来指定它是什么类型的文件?有人知道吗?

最佳答案

我终于找到了解决这个问题的方法!我没有使用 NSData 对象初始化音频播放器,而是将文件保存到 Documents 文件夹,然后使用文件 URL 初始化播放器

//download file and play from disk
NSData *audioData = [NSData dataWithContentsOfURL:someURL];
NSString *docDirPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *filePath = [NSString stringWithFormat:@"%@/%@.mp3", docDirPath , fileName];
[audioData writeToFile:filePath atomically:YES];

NSError *error;
NSURL *fileURL = [NSURL fileURLWithPath:filePath];
player = [[AVAudioPlayer alloc] initWithContentsOfURL:fileURL error:&error];
if (player == nil) {
NSLog(@"AudioPlayer did not load properly: %@", [error description]);
} else {
[player play];
}

应用程序处理完文件后,可以将其删除。希望他能帮助的不仅仅是我!

关于iPhone:AVAudioPlayer 不支持的文件类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4901709/

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