Koduleht » Kodeerimine » Kuidas kärbitud heli voogesitada MediaSource API abil

    Kuidas kärbitud heli voogesitada MediaSource API abil

    Koos MediaSource API, sa saad luua ja konfigureerida meediumivooge otse brauseris. See võimaldab teil teostada erinevaid meediumiandmeid peetakse meediaga seotud HTML-sildid, näiteks või . Näiteks saate segada erinevaid voogusid, luua kattuvaid meediume, laisk laadimiskandjad, ja redigeeri meedia meetrikaid näiteks helitugevuse või sageduse muutmine.

    Selles postituses näeme, kuidas seda teha audio-proovi voogesitus (kärbitud MP3-fail) MediaSource API otse brauseris, et esitlusmuusika oma publikule. Me katame kuidas tuvastada API toetused, kuidas ühendage HTML-meediaelement API-le, kuidas laadige meedia Ajaxi kaudu ja lõpuks kuidas oota seda.

    Kui soovite eelnevalt näha, mida me oleme, vaadake seda lähtekood Githubis, või vaadake demo leht.

    1. samm. Loo HTML

    HTML-i loomiseks lisage sildiga a kontrolli atribuut oma lehele. Tagasi ühilduvuse jaoks lisage vaikeveateade kasutajatele, kelle brauserid seda funktsiooni ei toeta. Selle sõnumi sisselülitamiseks / väljalülitamiseks kasutame JavaScripti.

      

    2. samm. Avastage brauseri tugi

    Looge JavaScriptis a proovige… püüda blokeerige see vea kui MediaSource API-d ei toetata kasutaja brauseri poolt või, teiste sõnadega, kui MediaSource (võti) ei eksisteeri Euroopa aken objekti.

     proovige if (! 'MediaSource' aknas) visata uus ReferenceError ('aknas ei ole MediaSource omadust.') catch (e) console.log (e);  

    3. samm. Avastage MIME tugi

    Pärast toe kontrollimist kontrollige ka MIME tüübi tugi. Kui brauser ei toeta meediumitüüpi, mida soovite voogesitada, hoiatage kasutajat ja vea.

    var mime = 'audio / mpeg'; kui (! MediaSource.isTypeSupported (mime)) alarm ('Meedia ei saa esitada. MIME-tüüpi meediumitüüp' + mime + 'pole toetatud.'); visata ('Meedia tüüpi' + mime + 'ei ole toetatud.');  

    Pange tähele, et ülaltoodud koodilõik peab olema paigutatud proovige blokeeri, enne saak plokk (viide, järgige rea numbrit või vaadake lõplikku JS-faili Githubis).

    4. samm silt MediaSource API-le

    Looge uus MediaSource objekti ja määrata see selle allikaks silt kasutades URL.createObjectURL () meetod.

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

    5. samm SourceBuffer vastu MediaSource

    Kui HTML-meediaelement avab meediaallika ja on valmis luua SourceBuffer objektid, MediaSource API tulekahjud a sourceopen sündmus .

    The SourceBuffer objekti omab rida meediat mis on lõpuks dekodeeritud, töödeldud ja mängitud. Üksik MediaSource objekti saab on mitu SourceBuffer objektid.

    Sisse sündmuste käitleja sourceopen sündmus, Lisa SourceBuffer vastu MediaSource koos addSourceBuffer () meetod.

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

    6. samm. Laadige meedia

    Nüüd, kui teil on SourceBuffer objekt, on aeg tõmmake MP3-fail. Meie näites teeme seda kasutades AJAXi taotlust.

    Kasutage masibuffer nagu vastuse tüüp, mis tähistab binaarandmeid. Kui vastus on edukalt tõmmatud, lisage see SourceBuffer koos lisageBuffer () meetod.

     mediaSource.addEventListener ('sourceopen', funktsioon () var sourceBuffer = this.addSourceBuffer (mime); var xhr = uus XMLHttpRequest; xhr.open ('GET', 'sample.mp3'); xhr.onload = function () try switch (this.status) case 200: sourceBuffer.appendBuffer (this.response); katkestus; juhtum 404: visata 'fail ei leitud'; vaikimisi: viska ' file '; catch (e) console.error (e);; xhr.send ();); 

    7. samm. Näidake voo lõppu

    Kui API on andmete lisamise lõpetanud SourceBuffer a sündmus kutsutakse uuendamine on vallandatud. Sündmuse käitleja sees helistage endOfStream () meetod MediaSource kuni näitavad, et oja on lõppenud.

     mediaSource.addEventListener ('sourceopen', funktsioon () var sourceBuffer = this.addSourceBuffer (mime); var xhr = uus XMLHttpRequest; xhr.open ('GET', 'sample.mp3'); ; juhtum 404: visata 'Faili ei leitud'; vaikimisi: viska 'Faili tõmbamine nurjus'; saak (e) console.error (e);; xhr.send ();) ; 

    8. samm. Katkesta meediumifail

    The SourceBuffer objektil on kaks omadust kutsus appendWindowStart ja lisageWindowEnd esindavad meediaandmete algus- ja lõpuaeg soovite filtreerida. Alltoodud esiletõstetud kood filtreerib esimesed neli sekundit MP3.

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

    Demo

    Ja see on kõik, meie heli näidis on voogesitatud otse veebilehelt. Selle eest lähtekood, vaata meie Github repo ja lõpptulemuse saamiseks vaadake demo leht.

    Brauseri tugi

    Selle kirja kirjutamisest alates MediaSource API-d toetatakse ametlikult kõigis suuremates brauserites. Kuid testimine näitab, et rakendamine on Firefoxis lollakas, ja Webkit brauseritel on ikka veel probleeme appendWindowStart vara.

    Kuna MediaSource API on veel eksperimentaalses etapis, juurdepääs kõrgematele redigeerimisfunktsioonidele võib olla piiratud, kuid striimimine funktsioon on midagi, mida saate kasutage kohe.