2012-06-29 17 views
6

पर m38u फ़ाइलों को स्ट्रीम करने के तरीके पर मार्गदर्शन मुझे लाइव टीवी चैनल पर स्ट्रीम करने के लिए m38u फ़ाइलें मिल रही हैं। मैंने इन फ़ाइलों को खोलने की कोशिश की है (क्योंकि वे मीडिया प्रकार "एमपीईजी/टीएस" के साथ फाइलों की सूची हैं) और उनमें से एक प्लेलिस्ट बनाएं। लेकिन वीडियो के बीच संक्रमण खराब हैं, यह अगले वीडियो को शुरू करने से पहले एक या दो सेकंड के लिए रुकता है।मेट्रो स्टाइल ऐप (WinRT)

मुझे हल करने के लिए कुछ सर्वर साइड कोड लिखने पर कोई फर्क नहीं पड़ता, लेकिन मुझे कुछ मार्गदर्शन की आवश्यकता है।

उत्तर

0

मैं कैसे आप अपने प्लेलिस्ट की स्थापना की पता नहीं है, लेकिन मुझे लगता है कि यह तुम ऐसा कैसे कर रहा है:

  1. आप एक MediaElement
  2. आप MediaElement.MediaEnded घटना की सदस्यता
  3. आप m38u फ़ाइल को पार्स करें और सूची से मुट्ठी स्ट्रीम को MediaElement.Source पर सेट करें।
  4. आप MediaElement.MediaEnded को संभालते हैं और प्रत्येक बार जब आप सूची से अगली स्ट्रीम सेट करते हैं।

क्या यह सच है? यदि हां, तो आपकी समस्या एक चरण 4 है। प्रत्येक बार जब आप नया स्रोत सेट करते हैं - MediaElement कम से कम कुछ वीडियो दिखाने के लिए सर्वर और बफर से धारा का अनुरोध करता है। मुझे लगता है कि यही कारण है कि आप 3 सेकंड संक्रमण देखते हैं। इस प्रकार आपको इसे हल करने की आवश्यकता है:

  1. आपके पास एक ही मीडिया एलिमेंट है।
  2. आपको अपने आईआरएंडएंडएपस्ट्रीम इंटरफ़ेस पर लागू करने की आवश्यकता है, जो स्मृति में स्ट्रीम (यदि यह वास्तव में बड़ा नहीं है) या डिस्क पर, या विशिष्ट बफर आकार के साथ बस बफर स्ट्रीम डाउनलोड कर सकता है।
  3. आप m38u फ़ाइल को पार्स करते हैं, पहले अपना आईआरएंडएक्सएपस्ट्रीम शुरू करें और इसे एक स्रोत के रूप में सेट करें।
  4. उदाहरण के लिए जब इसका 9 0% समय पर पहला वीडियो - आपको प्लेलिस्ट से दूसरी स्ट्रीम शुरू करने की आवश्यकता है, तो इसे IRandomAccessStream के साथ डाउनलोड करना प्रारंभ करें।
  5. जब MediaElement.MediaEnded सक्रिय किए जाएंगे - आप धारा है, जो MediaElement के लिए तैयार है बफ़र चुकी होगी, इसलिए तुम सिर्फ कदम से धारा स्थापित करने के लिए 4.
+0

मैं स्थानीय फाइलों के साथ यह करने की कोशिश की जरूरत है, दे दिया मुझे एक ही धीमी संक्रमण प्रदर्शन – Ateik

+0

स्थानीय फाइलें कभी-कभी धीमी भी हो सकती हैं। स्मृति का उपयोग करने की कोशिश करो। यदि यह काम नहीं करेगा, तो मुझे लगता है कि आपको उन्हें उपयोगकर्ता के लिए सर्वर पर गठबंधन करने की आवश्यकता होगी। – outcoldman

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