gpt4 book ai didi

iOS - 从 NSFileHandle 或 NSPipe 创建 NSURL

转载 作者:可可西里 更新时间:2023-11-01 03:21:35 31 4
gpt4 key购买 nike

我正在通过网络接收编码音频流,但是混入了一堆数据,所以我需要接收数据包,去除音频然后播放音频。

AVAudioPlayer,它可能是也可能不是最好的工具,但它是我目前正在追逐的路径,需要来自 NSData 或 NSURL 的数据。 NSData 不会工作,因为它是一个数据流,我希望它一到达就开始并继续播放。我的想法是:

NSPipe *pipe = [[NSPipe alloc] init];
NSFileHandle *writeHandle = [pipe fileHandleForWriting];
NSFileHandle *readHandle = [pipe fileHandleForReading];

// in network reception thread...
NSData *audioData = [packet getAudioData];
[writeHandle writeData:audioData];

// in audio thread...
NSURL *url = [[NSURL alloc] init];
[url setResourceValue:NSURLFileResourceTypeNamedPipe
forKey:NSURLFileResourceTypeKey
error:&error];
// Connect the readHandle
AVAudioPlayer *audioPlayer = [[AVAudioPlayer alloc]
initWithContentsOfURL:url
error:&error];

但是,我不知道如何将 `readHandle` 传递到 URL 中。如何从现有的 NSFileHandle 创建 NSURL?有没有更好的方法来解决这个问题?有没有办法将数据写入可以成为 NSURL 的东西?

唯一真正的要求是我可以尽可能接近实时地播放音频。我不想在数据播放前排队等待十分之一秒。

最佳答案

无法检索 NSFileHandle 的 URL,因为并非所有句柄都有对应的 URL。你的例子似乎就是这样一个例子。

关于iOS - 从 NSFileHandle 或 NSPipe 创建 NSURL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8232747/

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