2012-03-21 20 views
11

का उपयोग करके आईओएस पर सॉकेट-स्ट्रीमेड एच .264 फिल्म चलाएं मैं एक छोटे से आईफोन ऐप पर काम कर रहा हूं जो नियमित सॉकेट का उपयोग करके नेटवर्क कनेक्शन पर मूवी सामग्री स्ट्रीम कर रहा है। वीडियो H.264 प्रारूप में है। हालांकि मुझे डेटा खेलने/डीकोड करने में कठिनाइयां आ रही हैं। मैं FFMPEG का उपयोग करने पर विचार कर रहा हूं, लेकिन लाइसेंस परियोजना के लिए अनुपयुक्त बनाता है। मैं ऐप्पल के AVFoundation फ्रेमवर्क (AVPlayer विशेष रूप से) में देख रहा हूं, जो एच 264 सामग्री को संभालने में सक्षम है, हालांकि मैं केवल यूआरएल का उपयोग करके फिल्म शुरू करने के तरीकों को ढूंढने में सक्षम हूं - न कि मेमोरी बफर से स्ट्रीमिंग जाल।AVFoundation

मैं इस वैसे भी ऐसा करने के लिए कुछ परीक्षण कर गया है, निम्नलिखित तरीकों का उपयोग:

  1. फ़िल्म चलाएं एक नियमित AVPlayer का उपयोग कर। नेटवर्क पर हर बार डेटा प्राप्त होता है, यह एपेंड-मोड के साथ फॉपेन का उपयोग कर फ़ाइल में लिखा जाता है। AVPlayer की संपत्ति को फिर अद्यतन डेटा के साथ पुनः लोड/पुनर्निर्मित किया जाता है। इस दृष्टिकोण के साथ दो मुद्दे हैं: सबसे पहले, स्क्रीन थोड़ी देर के लिए काला हो जाती है जबकि पहली संपत्ति अनलोड हो जाती है और नया लोड होता है। दूसरा, मुझे नहीं पता कि खेल कहां बंद हो गया है, इसलिए मुझे यकीन नहीं है कि मैं नई संपत्ति को शुरू करने के लिए सही जगह कैसे ढूंढूंगा।
  2. दूसरा दृष्टिकोण फाइल को डेटा को पहले दृष्टिकोण में लिखना है, लेकिन अंतर के साथ कि डेटा दूसरी संपत्ति में लोड हो जाता है। AVQueuedPlayer तब उपयोग किया जाता है जहां दूसरी संपत्ति को खिलाड़ी में डाला/कतारबद्ध किया जाता है और फिर बफरिंग के दौरान बुलाया जाता है। पहली संपत्ति को फिर ब्लैक स्क्रीन के बिना उतार दिया जा सकता है। हालांकि, इस दृष्टिकोण का उपयोग करके यह पता लगाने के लिए कि नई संपत्ति को कहां शुरू करना है, यह और भी परेशानी (पहले दृष्टिकोण से) है।

क्या किसी ने ऐसा कुछ किया है और इसे काम किया है? क्या AVFoundation का उपयोग करके ऐसा करने का कोई उचित तरीका है?

+0

आप इस का उत्तर नहीं मिलता था? मैं भी एक एच 264 फ़ाइल (.264 फ़ाइल एक्सटेंशन) चलाने की कोशिश कर रहा हूं जिसमें एक फ्रेम है और इसे डीकोड करने का प्रयास कर रहा है। AVAssetReader इस फ़ाइल प्रारूप को स्वीकार नहीं करता है और मेरे पास एकमात्र योजना है जो प्रति फ्रेम एक एमपी 4 फ़ाइल बनाने के लिए है (यह पागल लगता है)। – Cthutu

+0

क्या कोई विशेष कारण है कि ऐप को खींचने के बजाय स्रोत को वीडियो को धक्का देना क्यों है? एचएलएस आमतौर पर दूसरे तरीके से काम करता है। यदि आपकी सोर्स मशीन ओएसएक्स चला सकती है, तो यूडीपी आरटीएसपी इनपुट स्ट्रीम से आपके लिए सेगमेंटिंग करने के लिए ऐप्पल टूल्स हैं। यदि नहीं, तो संभवतः आप एवीप्लेयर को नकली तरीके से नकली कर सकते हैं कि यह फोन पर प्रॉक्सी चलाकर सामान्य एचएलएस से निपट रहा है- अपनी फ़ाइल को आने के बाद, और भाग का प्रतिनिधित्व करने के लिए उपयुक्त नकली। M3u8 प्लेलिस्ट उत्पन्न करने के लिए कुछ कोड लिखें। –

उत्तर

0

ऐसा करने का आधिकारिक तरीका HTTP लाइव स्ट्रीमिंग प्रारूप है जो कई गुणवत्ता वाले स्तरों (अन्य चीजों के साथ) का समर्थन करता है और स्वचालित रूप से उनके बीच स्विच करता है (उदाहरण: यदि उपयोगकर्ता वाईफाई से सेलुलर तक चलता है)।

आप डॉक्स यहाँ पा सकते हैं: Apple Http Streaming Docs

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