2013-01-06 35 views
6

मुझे आईओएस ऐप्स बनाने के साथ अनुभव मिला है लेकिन वीडियो के साथ अनुभव नहीं है। मैं एक आईफोन ऐप बनाना चाहता हूं जो सर्वर पर वास्तविक समय वीडियो स्ट्रीम करता है। एक बार सर्वर पर मैं उस वीडियो को वास्तविक समय में उपभोक्ताओं को पहुंचा दूंगा।कैप्चर करें, फिर एक आईफोन से सर्वर पर स्ट्रीम करें,

मैंने काफी सामग्री पढ़ी है। क्या कोई मुझे बता सकता है कि निम्नलिखित सही है और मेरे लिए रिक्त स्थान भरें।

  1. आईफोन पर वीडियो रिकॉर्ड करने के लिए मुझे AVFoundation कक्षाओं का उपयोग करना चाहिए। AVCaptureSession का उपयोग करते समय प्रतिनिधि विधि कैप्चरऑटपुट: didOutputSampleBuffer :: कनेक्शन से मैं वीडियो के प्रत्येक फ्रेम तक पहुंच प्राप्त कर सकता हूं। अब जब मेरे पास वीडियो फ्रेम है तो मुझे फ्रेम
    • पता है कि फाउंडेशन क्लासेस केवल AVAssetWriter के माध्यम से H264 एन्कोडिंग की पेशकश करते हैं और ऐसी कक्षा के माध्यम से नहीं जो आसानी से वेब सर्वर पर स्ट्रीमिंग का समर्थन करता है। इसलिए, मुझे एक फ़ाइल में वीडियो लिखने के साथ छोड़ दिया गया है।
    • मैंने अन्य पोस्ट पढ़ी हैं जो कहते हैं कि वे 10 एसेट ब्लॉक लिखने के लिए दो एसेटवेटर्स का उपयोग कर सकते हैं, फिर सर्वर पर उन 10 सेकंड ब्लॉक को एनएसएसटी स्ट्रीम करें। क्या कोई यह समझाने के लिए एक साथ काम कर रहे दो AVAssetWriters के उपयोग को कोड करने के तरीके को समझा सकता है। अगर किसी के पास कोड है तो कृपया साझा करें।
+0

क्या आप कृपया जो कुछ भी समाप्त कर रहे हैं उसे साझा कर सकते हैं? –

उत्तर

5

आप सही है कि iPhone पर हार्डवेयर एनकोडर का उपयोग करने के लिए एक ही रास्ता एक फ़ाइल में इनकोडिंग वीडियो लिखने के लिए AVAssetWriter वर्ग का उपयोग करना है कर रहे हैं। दुर्भाग्यवश AVAssetWriter फाइल को बंद होने तक फ़ाइल पर moov परमाणु नहीं लिखता है (जिसे एन्कोड किए गए वीडियो को डीकोड करने की आवश्यकता होती है)।

इस प्रकार एक तरह से एक सर्वर से इनकोडिंग वीडियो स्ट्रीम करने के लिए, एक फाइल करने के लिए वीडियो के 10 सेकंड ब्लॉक बारे में यह बंद करो, और सर्वर के लिए उस फ़ाइल को भेजने के लिए किया जाएगा। मैंने पढ़ा है कि इस विधि का उपयोग फाइलों के समापन और खोलने के कारण प्लेबैक में कोई अंतराल नहीं किया जा सकता है, हालांकि मैंने इसे स्वयं नहीं किया है।

मुझे वीडियो here स्ट्रीम करने का एक और तरीका मिला।

यह उदाहरण 2 AVAssetWriters खुलता है। तब पहली फ्रेम पर यह दो फ़ाइलों के लिए लिखते हैं लेकिन तुरंत फ़ाइलों में से एक बंद कर देता है तो Moov परमाणु लिखा जाता है। फिर moov परमाणु डेटा के साथ दूसरी फ़ाइल को पाइप के रूप में एन्कोड किए गए वीडियो डेटा की स्ट्रीम प्राप्त करने के लिए उपयोग किया जा सकता है। यह उदाहरण केवल वीडियो डेटा भेजने के लिए काम करता है, लेकिन यह बहुत साफ है और कोड है कि मुझे यह पता लगाने iPhone पर वीडियो के साथ कई मुद्दों से निपटने के लिए कैसे मदद की समझने में आसान है।

+0

मेरे पास आपके उत्तर पर एक प्रश्न है, मैं इस पर ऑडियो डेटा कैसे एम्बेड कर सकता हूं –