iOS – 从NSFileHandle或NSPipe创建NSURL

前端之家收集整理的这篇文章主要介绍了iOS – 从NSFileHandle或NSPipe创建NSURL前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在通过网络接收编码音频流,但是混合了大量数据,所以我需要接收数据包,去除音频然后播放音频.

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相关文章