Mājas lapa » Kodēšana » Kā straumēt atdalītu audio, izmantojot MediaSource API

    Kā straumēt atdalītu audio, izmantojot MediaSource API

    Ar MediaSource API, jūs varat ģenerēt un konfigurēt multivides plūsmas tieši pārlūkprogrammā. Tas ļauj jums veikt dažādus mediju datus glabā ar plašsaziņas līdzekļiem saistītus HTML tagus, piemēram, vai . Piemēram, varat sajauciet dažādas plūsmas, izveidot pārklājošu mediju, slinks kravas nesējs, un rediģēt multivides rādītājus piemēram, mainīt skaļumu vai frekvenci.

    Šajā ziņojumā mēs īpaši redzēsim, kā to izdarīt straumēt audio paraugu (saīsināts MP3 fails) ar MediaSource API tiesības pārlūkprogrammā priekšnesuma mūzika jūsu auditorijai. Mēs aptversim, kā noteikt API atbalstu, kā savienojiet HTML multivides elementu API, kā to izdarīt ielādējiet mediju izmantojot Ajax, un visbeidzot, kā plūsma.

    Ja jūs vēlaties iepriekš redzēt, ko mēs esam, apskatiet avota kods Github, vai izbraukšana demonstrācijas lapa.

    1. solis. Izveidojiet HTML

    Lai izveidotu HTML, pievienojiet atzīme ar a kontroli atribūts uz jūsu lapu. Arī atgriezeniskai savietojamībai pievienot noklusējuma kļūdas ziņojumu lietotājiem, kuru pārlūkprogrammas neatbalsta šo funkciju. Lai ieslēgtu / izslēgtu šo ziņojumu, mēs izmantosim JavaScript.

      

    2. solis. Noteikt pārlūkprogrammas atbalstu

    Programmā JavaScript izveidojiet a mēģiniet… noķert bloķēt to mest kļūdu ja MediaSource API netiek atbalstīts pēc lietotāja pārlūka vai, citiem vārdiem sakot, ja MediaSource (atslēga) neeksistē iekš logu objektu.

     mēģiniet if (! 'MediaSource' logā) mest jaunu ReferenceError ('Loga objektā nav MediaSource īpašuma.') catch (e) console.log (e);  

    3. solis. Noteikt MIME atbalstu

    Pēc atbalsta pārbaudes pārbaudiet arī MIME tipa atbalsts. Ja pārlūks neatbalsta multivides MIME veidu, kuru vēlaties straumēt, brīdināt lietotāju un mest kļūdu.

    var mime = 'audio / mpeg'; ja (! MediaSource.isTypeSupported (mime)) brīdinājums (“Nevar atskaņot multividi. MIME tips“ + mime + ”netiek atbalstīts.”); mest (netiek atbalstīts “Mime + + mime +” veids. ”);  

    Ņemiet vērā, ka iepriekš minētajam koda fragmentam jābūt iekšpusē mēģiniet bloķēt, pirms nozvejas bloks (atsaucei, sekojiet līnijas numerācijai vai pārbaudiet galīgo JS failu Github).

    4. solis. Saite tagu MediaSource API

    Izveidojiet jaunu MediaSource objektu un piešķirt to kā. \ t tag izmantojot URL.createObjectURL () metodi.

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

    5. solis SourceBuffer iebilst MediaSource

    Kad HTML multivides elements piekļūst multivides avotam un ir gatava izveidot SourceBuffer objektiem, MediaSource API ugunsgrēki a sourceopen notikumu .

    The SourceBuffer objektu ir mediju gabals kas tiek dekodēts, apstrādāts un atskaņots. Viens MediaSource objekts var ir vairāki SourceBuffer objektiem.

    Iekšpusē notikumu apstrādātājs sourceopen notikumu, pievienot a SourceBuffer iebilst MediaSource Ar addSourceBuffer () metodi.

     mediaSource.addEventListener ('sourceopen', funkcija () var sourceBuffer = this.addSourceBuffer (mime);); 

    6. solis. Ielādējiet multividi

    Tagad, kad jums ir a SourceBuffer objekts, ir pienācis laiks ielādējiet MP3 failu. Mūsu piemērā mēs to darīsim izmantojot AJAX pieprasījumu.

    Izmantot masybufferanswerType, kas apzīmē bināros datus. Kad atbilde ir veiksmīgi iegūta, pievienojiet to SourceBuffer Ar pievienojiet buferi () metodi.

     mediaSource.addEventListener ('sourceopen', funkcija () var sourceBuffer = this.addSourceBuffer (mime); var xhr = jauns XMLHttpRequest; xhr.open ('GET', 'sample.mp3'); xhr.responseType = 'masybuffer' ; xhr.onload = funkcija () try switch (this.status) lieta 200: sourceBuffer.appendBuffer (this.response); pārtraukums; lieta 404: mest “Fails nav atrasts”; noklusējums: mest “Neizdevās ielādēt file '; catch (e) console.error (e);; xhr.send ();); 

    7. solis. Norādiet straumes beigas

    Kad API ir pabeigusi datu pievienošanu SourceBuffer a notikums sauc atjaunināt tiek atlaists. Notikumu apstrādātāja ietvaros zvaniet uz straumes beigas() metode MediaSource uz norāda, ka plūsma ir beigusies.

     mediaSource.addEventListener ('sourceopen', funkcija () var sourceBuffer = this.addSourceBuffer (mime); var xhr = jauns XMLHttpRequest; xhr.open ('GET', 'sample.mp3'); xhr.responseType = 'masybuffer' ; xhr.onload = funkcija () try switch (this.status) lieta 200: sourceBuffer.appendBuffer (this.response); sourceBuffer.addEventListener ('updateend', funkcija (_) mediaSource.endOfStream (); 404: mest “Fails nav atrasts”; noklusējums: mest “Neizdevās ielādēt failu”; nozvejas (e) console.error (e);; xhr.send ();) ; 

    8. solis. Samaziniet multivides failu

    The SourceBuffer objektam ir divas īpašības sauc appendWindowStart un appendWindowEnd kas pārstāv mediju datu sākuma un beigu laiks kuru vēlaties filtrēt. Izceltais kods zemāk filtrē pirmās četras sekundes MP3.

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

    Demo

    Un tas viss, mūsu audio paraugs tiek straumēts tieši no tīmekļa lapas. Priekš avota kods, apskatīt mūsu Github repo un par galīgo rezultātu, pārbaudiet demonstrācijas lapa.

    Pārlūka atbalsts

    Kā rakstīt šo amatu, MediaSource API tiek oficiāli atbalstīta visās galvenajās pārlūkprogrammās. Bet testēšana liecina, ka ieviešana ir buggy Firefox, un Webkit pārlūkprogrammām joprojām ir problēmas ar appendWindowStart īpašums.

    Tā kā ir MediaSource API vēl eksperimentālajā posmā, piekļuve augstākām rediģēšanas funkcijām var būt ierobežota, bet pamata straumēšana funkcija ir kaut kas, ko varat izmantot tūlīt.