का उपयोग करके आईओएस पर सॉकेट-स्ट्रीमेड एच .264 फिल्म चलाएं मैं एक छोटे से आईफोन ऐप पर काम कर रहा हूं जो नियमित सॉकेट का उपयोग करके नेटवर्क कनेक्शन पर मूवी सामग्री स्ट्रीम कर रहा है। वीडियो H.264
प्रारूप में है। हालांकि मुझे डेटा खेलने/डीकोड करने में कठिनाइयां आ रही हैं। मैं FFMPEG
का उपयोग करने पर विचार कर रहा हूं, लेकिन लाइसेंस परियोजना के लिए अनुपयुक्त बनाता है। मैं ऐप्पल के AVFoundation
फ्रेमवर्क (AVPlayer
विशेष रूप से) में देख रहा हूं, जो एच 264 सामग्री को संभालने में सक्षम है, हालांकि मैं केवल यूआरएल का उपयोग करके फिल्म शुरू करने के तरीकों को ढूंढने में सक्षम हूं - न कि मेमोरी बफर से स्ट्रीमिंग जाल।AVFoundation
मैं इस वैसे भी ऐसा करने के लिए कुछ परीक्षण कर गया है, निम्नलिखित तरीकों का उपयोग:
- फ़िल्म चलाएं एक नियमित
AVPlayer
का उपयोग कर। नेटवर्क पर हर बार डेटा प्राप्त होता है, यह एपेंड-मोड के साथ फॉपेन का उपयोग कर फ़ाइल में लिखा जाता है।AVPlayer
की संपत्ति को फिर अद्यतन डेटा के साथ पुनः लोड/पुनर्निर्मित किया जाता है। इस दृष्टिकोण के साथ दो मुद्दे हैं: सबसे पहले, स्क्रीन थोड़ी देर के लिए काला हो जाती है जबकि पहली संपत्ति अनलोड हो जाती है और नया लोड होता है। दूसरा, मुझे नहीं पता कि खेल कहां बंद हो गया है, इसलिए मुझे यकीन नहीं है कि मैं नई संपत्ति को शुरू करने के लिए सही जगह कैसे ढूंढूंगा। - दूसरा दृष्टिकोण फाइल को डेटा को पहले दृष्टिकोण में लिखना है, लेकिन अंतर के साथ कि डेटा दूसरी संपत्ति में लोड हो जाता है।
AVQueuedPlayer
तब उपयोग किया जाता है जहां दूसरी संपत्ति को खिलाड़ी में डाला/कतारबद्ध किया जाता है और फिर बफरिंग के दौरान बुलाया जाता है। पहली संपत्ति को फिर ब्लैक स्क्रीन के बिना उतार दिया जा सकता है। हालांकि, इस दृष्टिकोण का उपयोग करके यह पता लगाने के लिए कि नई संपत्ति को कहां शुरू करना है, यह और भी परेशानी (पहले दृष्टिकोण से) है।
क्या किसी ने ऐसा कुछ किया है और इसे काम किया है? क्या AVFoundation
का उपयोग करके ऐसा करने का कोई उचित तरीका है?
आप इस का उत्तर नहीं मिलता था? मैं भी एक एच 264 फ़ाइल (.264 फ़ाइल एक्सटेंशन) चलाने की कोशिश कर रहा हूं जिसमें एक फ्रेम है और इसे डीकोड करने का प्रयास कर रहा है। AVAssetReader इस फ़ाइल प्रारूप को स्वीकार नहीं करता है और मेरे पास एकमात्र योजना है जो प्रति फ्रेम एक एमपी 4 फ़ाइल बनाने के लिए है (यह पागल लगता है)। – Cthutu
क्या कोई विशेष कारण है कि ऐप को खींचने के बजाय स्रोत को वीडियो को धक्का देना क्यों है? एचएलएस आमतौर पर दूसरे तरीके से काम करता है। यदि आपकी सोर्स मशीन ओएसएक्स चला सकती है, तो यूडीपी आरटीएसपी इनपुट स्ट्रीम से आपके लिए सेगमेंटिंग करने के लिए ऐप्पल टूल्स हैं। यदि नहीं, तो संभवतः आप एवीप्लेयर को नकली तरीके से नकली कर सकते हैं कि यह फोन पर प्रॉक्सी चलाकर सामान्य एचएलएस से निपट रहा है- अपनी फ़ाइल को आने के बाद, और भाग का प्रतिनिधित्व करने के लिए उपयुक्त नकली। M3u8 प्लेलिस्ट उत्पन्न करने के लिए कुछ कोड लिखें। –