صدای HTML5 و Web Audio API BFF هستند

نسخه نمایشی عنصر منبع رسانه
نسخه ی نمایشی

به عنوان بخشی از ادغام MediaStream با WebRTC، Web Audio API اخیراً یک گوهر مخفی به نام createMediaElementSource() را دریافت کرد. اساساً، به شما امکان می دهد یک عنصر <audio> HTML5 را به عنوان منبع ورودی به API متصل کنید. به زبان ساده ... شما می توانید صدای HTML5 را تجسم کنید، جهش های صوتی بیدرنگ، فیلتر کردن، و غیره را انجام دهید!

به طور معمول، Web Audio API با بارگذاری یک آهنگ از طریق XHR2 ، ورودی فایل، هر چیزی که باشد، کار می کند و شما خاموش هستید. در عوض، این قلاب به شما امکان می دهد HTML5 <audio> با تجسم، فیلتر و قدرت پردازش Web Audio API ترکیب کنید.

ادغام با <audio> برای پخش دارایی های صوتی نسبتا طولانی ایده آل است. فرض کنید فایل شما 2 ساعت است. شما نمی خواهید کل آن چیز را رمزگشایی کنید! همچنین جالب است اگر می خواهید یک API (و UI) پخش کننده رسانه سطح بالا برای پخش/مکث/جستجو بسازید، اما می خواهید مقداری پردازش/تحلیل اضافی را اعمال کنید.

در اینجا به نظر می رسد:

// Create an <audio> element dynamically.
var audio = new Audio();
audio.src = 'myfile.mp3';
audio.controls = true;
audio.autoplay = true;
document.body.appendChild(audio);

var context = new webkitAudioContext();
var analyser = context.createAnalyser();

// Wait for window.onload to fire. See crbug.com/112368
window.addEventListener('load', function(e) {
    // Our <audio> element will be the audio source.
    var source = context.createMediaElementSource(audio);
    source.connect(analyser);
    analyser.connect(context.destination);

    // ...call requestAnimationFrame() and render the analyser's output to canvas.
}, false);

همانطور که در کد ذکر شد، یک اشکال وجود دارد که نیاز به تنظیم منبع پس از window.onload دارد.

مرحله منطقی بعدی رفع crbub.com/112367 است. هنگامی که آن توله سگ آماده شد، می‌توانید WebRTC (به ویژه API navigator.getUserMedia() ) را برای انتقال ورودی صوتی (مانند میکروفن، میکسر، گیتار) به تگ <audio> متصل کنید، سپس آن را با استفاده از تگ تجسم کنید. Web Audio API. مگا بوم!