เสียง HTML5 และ Web Audio API เป็น BFF

การสาธิตองค์ประกอบแหล่งที่มาของสื่อ
DEMO

Web Audio API เพิ่งเปิดตัวฟีเจอร์ใหม่ที่เรียกว่า createMediaElementSource() ซึ่งเป็นส่วนหนึ่งของการผสานรวม MediaStream กับ WebRTC โดยพื้นฐานแล้ว ฟีเจอร์นี้ช่วยให้คุณเชื่อมต่อองค์ประกอบ <audio> ของ HTML5 เป็นแหล่งข้อมูลอินพุตไปยัง API ได้ พูดให้เข้าใจง่ายๆ คือคุณสามารถแสดงภาพเสียง HTML5, เปลี่ยนเสียงแบบเรียลไทม์, กรองเสียง และอื่นๆ

โดยปกติแล้ว Web Audio API จะทํางานโดยการโหลดเพลงผ่าน XHR2, อินพุตไฟล์ หรืออะไรก็ตาม แล้วคุณก็พร้อมใช้งาน แต่ฮุกนี้จะช่วยให้คุณรวม <audio> ของ HTML5 เข้ากับการแสดงภาพ ฟิลเตอร์ และความสามารถในการประมวลผลของ 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 (โดยเฉพาะ navigator.getUserMedia() API) เพื่อส่งผ่านอินพุตเสียง (เช่น ไมโครโฟน มิกเซอร์ กีตาร์) ไปยังแท็ก <audio> จากนั้นแสดงภาพโดยใช้ Web Audio API ได้ ว้าว