मुखपृष्ठ » कोडिंग » MediaSource API का उपयोग करके ऑडियो को कैसे काट दिया जाए

    MediaSource API का उपयोग करके ऑडियो को कैसे काट दिया जाए

    उसके साथ MediaSource एपीआई, आप ऐसा कर सकते हैं मीडिया स्ट्रीम उत्पन्न और कॉन्फ़िगर करें ब्राउज़र में सही है। यह आपको अनुमति देता है मीडिया डेटा पर कई तरह के ऑपरेशन करते हैं मीडिया से संबंधित एचटीएमएल टैग जैसे या . उदाहरण के लिए, आप कर सकते हैं विभिन्न धाराओं को मिलाएं, ओवरलैपिंग मीडिया बनाएँ, आलसी लोड मीडिया, तथा मीडिया मीट्रिक संपादित करें जैसे वॉल्यूम या फ़्रीक्वेंसी बदलना.

    इस पोस्ट में, हम विशेष रूप से देखेंगे कि कैसे एक ऑडियो नमूना स्ट्रीम करें (एक छिन्न एमपी 3 फ़ाइल) के साथ MediaSource एपीआई ब्राउज़र में सही करने के लिए संगीत दिखाने से पहले अपने दर्शकों के लिए। हम कैसे कवर करेंगे एपीआई के लिए समर्थन का पता लगाएं, कैसे HTML मीडिया तत्व कनेक्ट करें एपीआई के लिए, कैसे करें मीडिया को लाना अजाक्स के माध्यम से, और अंत में कैसे इसे स्ट्रीम करें.

    यदि आप पहले से देखना चाहते हैं कि हम क्या कर रहे हैं, तो एक नजर डालें स्रोत कोड Github पर, या बाहर की जाँच करें डेमो पेज.

    स्टेप 1. HTML बनाएं

    HTML बनाने के लिए, a जोड़ें एक के साथ टैग नियंत्रण गुण अपने पेज पर पिछड़ी अनुकूलता के लिए भी डिफ़ॉल्ट त्रुटि संदेश जोड़ें उन उपयोगकर्ताओं के लिए जिनके ब्राउज़र सुविधा का समर्थन नहीं करते हैं। हम इस संदेश को चालू / बंद करने के लिए जावास्क्रिप्ट का उपयोग करेंगे.

      

    चरण 2. ब्राउज़र समर्थन का पता लगाएं

    जावास्क्रिप्ट में, एक बनाएँ पकड़ने की कोशिश ब्लॉक करेगा कि एक त्रुटि यदि MediaSource API समर्थित नहीं है उपयोगकर्ता के ब्राउज़र द्वारा, या, यदि अन्य शब्दों के साथ MediaSource (चाबी) अस्तित्व में नहीं है में खिड़की वस्तु.

     (! 'MediaSource' विंडो में) का प्रयास करें, नए ReferenceError को फेंकें ('विंडो ऑब्जेक्ट में MediaSource नहीं है।') catch (e) कंसोल.लॉग (e)।  

    चरण 3. MIME समर्थन का पता लगाएं

    समर्थन जाँच के बाद, के लिए भी जाँच करें MIME प्रकार का समर्थन. यदि मीडिया का MIME प्रकार जिसे आप स्ट्रीम करना चाहते हैं, वह ब्राउज़र द्वारा समर्थित नहीं है, उपयोगकर्ता को सचेत करें तथा एक त्रुटि.

    var माइम = 'ऑडियो / एमपीईजी'; if ((MediaSource.isTypeSupported (mime)) अलर्ट ('मीडिया नहीं चला सकता है। MIME टाइप का मीडिया' + माइम + 'समर्थित नहीं है।'); फेंक ('प्रकार का मीडिया' + माइम + 'समर्थित नहीं है।));  

    ध्यान दें कि ऊपर कोड स्निपेट होना चाहिए अंदर रखा प्रयत्न खंड, से पहले पकड़ ब्लॉक करें (संदर्भ के लिए, लाइन नंबरिंग का पालन करें या जीथुब पर अंतिम जेएस फ़ाइल देखें).

    चरण 4. लिंक MediaSource एपीआई के लिए टैग

    कोई नया बनाएं MediaSource वस्तु, और के स्रोत के रूप में असाइन करें टैग का उपयोग करके URL.createObjectURL () तरीका.

     var audio = document.querySelector ('audio'), mediaSource = new MediaSource (); Audio.src = URL.createObjectURL (mediaSource); 

    चरण 5. एक जोड़ें SourceBuffer करने के लिए वस्तु MediaSource

    जब एक HTML मीडिया तत्व एक मीडिया स्रोत तक पहुँचता है और करने के लिए तैयार है सर्जन करना SourceBuffer वस्तुओं, मीडिया स्रोत एपीआई आग sourceopen घटना .

    SourceBuffer वस्तु मीडिया का एक हिस्सा रखता है अंत में डिकोड किया जाता है, संसाधित किया जाता है और खेला जाता है। अकेला MediaSource वस्तु कर सकते हैं कई हैं SourceBuffer वस्तुओं.

    के अंदर के ईवेंट हैंडलर sourceopen घटना, एक जोड़ें SourceBuffer करने के लिए वस्तु MediaSource उसके साथ addSourceBuffer () तरीका.

     MediaSource.addEventListener ('sourceopen', function () var sourceBuffer = this.addSourceBuffer (mime);); 

    चरण 6. मीडिया प्राप्त करें

    अब जब आपके पास ए SourceBuffer ऑब्जेक्ट, यह समय है MP3 फ़ाइल लाएँ. हमारे उदाहरण में, हम ऐसा करेंगे AJAX अनुरोध का उपयोग करना.

    उपयोग arraybuffer जैसा responseType, कौन कौन से बाइनरी डेटा को दर्शाता है. जब प्रतिक्रिया सफलतापूर्वक प्राप्त होती है, इसे संलग्न करें SourceBuffer उसके साथ appendBuffer () तरीका.

     mediaSource.addEventListener ('sourceopen', function () var sourceBuffer = this.addSourceBuffer (mime); var xhr = new XMLHttpRequest; xhr .open ('GET', 'sample.mp3'); xhr.responseType = 'array_uff ; xhr.onload = function () try switch (this.status) case 200: sourceBuffer.appendBuffer (this.response); ब्रेक; केस 404: थ्रो Not फाइल नॉट फाउंड ’; डिफ़ॉल्ट - थ्रो’ को लाने में असफल रहा। फ़ाइल '; कैच (ई) कंसोल.इरोर (ई);; xhr.send ();); 

    चरण 7. धारा के अंत का संकेत दें

    जब एपीआई ने डेटा को जोड़ना बंद कर दिया है SourceBuffer एक ईवेंट कहा जाता है updatend निकाल दिया जाता है. किसी इवेंट हैंडलर के अंदर, कॉल करें धारा का अंत() उसकि विधि MediaSource सेवा मेरे इंगित करें कि धारा समाप्त हो गई है.

     mediaSource.addEventListener ('sourceopen', function () var sourceBuffer = this.addSourceBuffer (mime); var xhr = new XMLHttpRequest; xhr .open ('GET', 'sample.mp3'); xhr.responseType = 'array_uff ; xhr.onload = function () try switch (this.status) case 200: sourceBuffer.appendBuffer (this.response); sourceBuffer.addEventListener ('updateend', function (_) mediaSource.endOfStream ();; ); ब्रेक; केस 404: थ्रो 'फाइल नॉट फाउंड'; डिफॉल्ट: थ्रो 'फाइल को लाने में असफल रहा'; (ई) कंसोल.रोर (ई);; xhr.send ();; ; 

    स्टेप 8. मीडिया फाइल को ट्रंक करें

    SourceBuffer वस्तु है दो गुण बुलाया appendWindowStart तथा appendWindowEnd का प्रतिनिधित्व कर रहा है मीडिया डेटा का प्रारंभ और समाप्ति समय आप फ़िल्टर करना चाहते हैं। नीचे हाइलाइट किया गया कोड पहले चार सेकंड फ़िल्टर करता है एमपी के.

     mediaSource.addEventListener ('sourceopen', function () var sourceBuffer = this.addSourceBuffer (mime); sourceBuffer.appendWindowEnd = 4.0;…); 

    डेमो

    और बस इतना ही, हमारा ऑडियो सैंपल स्ट्रीम किया गया है वेब पेज से ही सही। के लिए सोर्स कोड, हमारे पर एक नज़र है गितुब रेपो और अंतिम परिणाम के लिए, बाहर की जाँच करें डेमो पेज.

    ब्राउज़र का समर्थन

    इस पोस्ट को लिखने के रूप में, MediaSource एपीआई सभी प्रमुख ब्राउज़रों में आधिकारिक तौर पर समर्थित है। लेकिन परीक्षण से पता चलता है कि ए कार्यान्वयन फ़ायरफ़ॉक्स में छोटी गाड़ी है, और वेबकिट ब्राउज़रों को अभी भी इससे परेशानी है appendWindowStart संपत्ति.

    जैसा कि MediaSource API है अभी भी अपने प्रायोगिक चरण में है, उच्चतर संपादन कार्यों तक पहुँच सीमित हो सकती है लेकिन मूल स्ट्रीमिंग सुविधा कुछ आप कर सकते हैं तुरंत उपयोग करें.