से एनएसआरएल बनाएं, मुझे नेटवर्क पर एन्कोडेड ऑडियो की एक स्ट्रीम प्राप्त हो रही है, लेकिन इसमें मिश्रित डेटा का एक गुच्छा है इसलिए मुझे पैकेट प्राप्त करने, ऑडियो को बाहर करने की आवश्यकता है और फिर खेलें ऑडियो। आईओएस - एनएसएफइल हैंडल या एनएसपीआईपी
AVAudioPlayer है, जो या इसके लिए सबसे अच्छा उपकरण नहीं हो सकता, लेकिन यह, पथ मैं वर्तमान में पीछा कर रहा हूँ है NSData या NSURL से डेटा चाहता है। एनएसडीटा काम नहीं करेगा क्योंकि यह डेटा की एक धारा है और मैं इसे जल्द से जल्द शुरू करना चाहता हूं और खेलना जारी रखूंगा। मेरे बारे में सोचा था:
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];
हालांकि, मैं URL में `readHandle` पारित करने के लिए कैसे पता नहीं है। मैं मौजूदा NSFileHandle से NSRL कैसे बना सकता हूं? क्या इसके लिए पूरी तरह से कुछ बेहतर दृष्टिकोण है? क्या किसी ऐसे डेटा में डेटा लिखने का कोई तरीका है जो NSRL बन सकता है?
केवल वास्तविक आवश्यकता यह है कि मैं जितना संभव हो सके ऑडियो को वास्तविक समय के रूप में चला सकता हूं। मैं इसे चलाने से पहले एक सेकंड के दसवें के लिए डेटा कतार नहीं करना चाहता हूं।
नामित पाइप बनाने और उस नामित पाइप का यूआरएल बनाने के बारे में क्या? –
डब्ल्यूटीपी - धन्यवाद। मुझे विचार पसंद है और यहां तक कि यह कैसे किया जाए इसके लिए खोज की गई लेकिन आईओएस में नामित पाइप के बारे में कुछ भी नहीं देखा। सुझाव? – Schlameel
आईओएस मैक ओएस एक्स के आधार पर एक यूनिक्स सिस्टम है, इसलिए नाम बनाने के लिए ['mkfifo'] (http://www.unix.com/man-page/FreeBSD/2/mkfifo/) का उपयोग करना संभव होना चाहिए पाइप। फिर आप बस उसमें से 'NSURL' बनाते हैं। –