2011-11-22 7 views
8

से एनएसआरएल बनाएं, मुझे नेटवर्क पर एन्कोडेड ऑडियो की एक स्ट्रीम प्राप्त हो रही है, लेकिन इसमें मिश्रित डेटा का एक गुच्छा है इसलिए मुझे पैकेट प्राप्त करने, ऑडियो को बाहर करने की आवश्यकता है और फिर खेलें ऑडियो। आईओएस - एनएसएफइल हैंडल या एनएसपीआईपी

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 बन सकता है?

केवल वास्तविक आवश्यकता यह है कि मैं जितना संभव हो सके ऑडियो को वास्तविक समय के रूप में चला सकता हूं। मैं इसे चलाने से पहले एक सेकंड के दसवें के लिए डेटा कतार नहीं करना चाहता हूं।

+0

नामित पाइप बनाने और उस नामित पाइप का यूआरएल बनाने के बारे में क्या? –

+0

डब्ल्यूटीपी - धन्यवाद। मुझे विचार पसंद है और यहां तक ​​कि यह कैसे किया जाए इसके लिए खोज की गई लेकिन आईओएस में नामित पाइप के बारे में कुछ भी नहीं देखा। सुझाव? – Schlameel

+0

आईओएस मैक ओएस एक्स के आधार पर एक यूनिक्स सिस्टम है, इसलिए नाम बनाने के लिए ['mkfifo'] (http://www.unix.com/man-page/FreeBSD/2/mkfifo/) का उपयोग करना संभव होना चाहिए पाइप। फिर आप बस उसमें से 'NSURL' बनाते हैं। –

उत्तर

0

NSFileHandle के URL को पुनर्प्राप्त करना संभव नहीं है क्योंकि सभी हैंडल में कोई संबंधित URL नहीं है। आपका उदाहरण एक ऐसा उदाहरण प्रतीत होता है।

संबंधित मुद्दे