2016-03-20 6 views
11

मैंने एमपी 4 बॉक्स का उपयोग करके लंबे एमपी 4 वीडियो के लिए निश्चित लंबाई खंड बनाए हैं। एमपी 4 बॉक्स एक मेटा जानकारी फ़ाइल mv_init.mp4 और mv_1.m4s, mv_2.m4s जैसे सेगमेंट बनाता है, ... मैं HTML5 मीडिया स्रोत एक्सटेंशन का उपयोग करके वीडियो स्ट्रीम करता हूं और स्ट्रीमिंग ठीक से काम कर रही है।एचटीएमएल 5 वीडियो स्ट्रीमिंग में .m4s सेगमेंट फ़ाइल प्रत्यय की गणना करें जब उपयोगकर्ता किसी अन्य समय की तलाश करता है

समस्या यह है कि मैं अपने HTML5 प्लेयर की सुविधा मांगने के समय का उपयोग करने में असमर्थ हूं। जब कोई उपयोगकर्ता किसी अन्य समय बिंदु की तलाश करने के लिए खोजबार का उपयोग करता है, तो मुझे उस currentTime के लिए सही सेगमेंट फ़ाइल (mv_{number}.m4s) लाने की आवश्यकता है।

उदाहरण के लिए:

  • वीडियो अवधि: 2 घंटे
  • खंड का आकार: 10 सेकंड
  • उपयोगकर्ता समय करना चाहता है: 25 मिनट

25 मिनट = 25 × 60 सेकंड = 1500 सेकेंड चूंकि प्रत्येक सेगमेंट 10 सेकंड का होता है, मुझे सेगमेंट नंबर 1500/10 = 150 की आवश्यकता होती है। आवश्यक सेगमेंट फ़ाइल mv_150.m4s है।

गणना स्पष्ट रूप से सही प्रतीत होती है, लेकिन स्ट्रीमिंग स्ट्रीमिंग के साथ mv_150.m4s के बाद कई और फ़ाइलों को डाउनलोड करता है।

सेगमेंट फ़ाइल नंबर की सही गणना कैसे करें, ताकि खोज के बाद स्ट्रीमिंग आसानी से चलती है, बिना किसी अतिरिक्त फाइल को डाउनलोड किए?

MP4 वीडियो के सेगमेंट बनाने के लिए, मैं निम्न आदेश का प्रयोग किया:

MP4Box -dash 10000 -out video.mpd -dash-profile live -segment-name mv_ -rap video.mp4 
+0

क्या आप खिलाड़ी के लेखक हैं? क्या आप कृपया एक [एमसीवी] शामिल कर सकते हैं? अर्थात। समस्या का प्रदर्शन करने वाला एक न्यूनतम उदाहरण। आप किस ब्राउज़र का उपयोग करते हैं? – Palec

उत्तर

3

मैं इस मामले पर शोध किया है और असली कारण मिल गया। सेगमेंट लोड करने के लिए caluclation सही था। यह मुद्दा वीडियो फ़ाइल में मुख्य फ्रेम अंतराल के साथ था। एक कीफ्रेम वीडियो में एक फ्रेम है जिसमें से वीडियो उस बिंदु से बाद में लोड और चला सकता है। तो मेरे मामले में मुझे प्रत्येक सेगमेंट की शुरुआत में कीफ्रेम डालना होगा। इसलिए जब हम अलग-अलग समय की स्थिति में वीडियो खोजते हैं तो लोड होने वाले अगले सेगमेंट में इसकी शुरुआत में एक कीफ्रेम होता है।

वीडियो फ़ाइल में कीफ्रेम FFMPEG का उपयोग करके सेटअप किया जा सकता है। तो उदाहरण के लिए यदि हमारे पास 5 सेकंड के सेगमेंट वाले वीडियो हैं तो हमें ffmpeg का उपयोग करके 5 सेकंड अंतराल पर कीफ्रेम बनाना होगा। कीफ्रेम सेट करते समय एक और महत्वपूर्ण बिंदु वीडियो की फ्रेम दर में देखना है। वीडियो में एक निश्चित फ्रेम दर होनी चाहिए ताकि हम निश्चित रूप से कीफ्रेम की स्थिति की गणना कर सकें।

उदाहरण:

Video File: gladiator.mp4 

Segment Size: 5 seconds 

नहीं हम सेट फ्रेम दर और कुंजी फ्रेम INTERVAL FFMPEG

ffmpeg मैं gladiator.mp4 -x264-पैरामीटर keyint = 120 का उपयोग करते हुए: न्यूनतम-keyint = 120: नो-सीनकट = 1 -आर 24 ग्लैडिएटर-आउटपुट।mp4

keyint=120 i.e; 24 fps * 5 seconds = 120 

और अब हम Mp4Box

का उपयोग करके सेगमेंट फ़ाइलों को बनाने के

MP4Box डैश 5000 -frag 5000 आउट gladiator.mpd डैश-प्रोफाइल पर मांग -segment नाम mv_ ग्लैडीएटर-output.mp4

तो यह प्रत्येक सेगमेंट फ़ाइल की शुरुआत में कीफ्रेम होने पर mv_1, mv_2, और जैसे सेगमेंट बनाएगा।

Seekable Dash Streaming Example

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