2011-12-14 39 views
5

Tôi quan tâm đến việc sử dụng Web Audio API. Rất tiếc, các tệp âm thanh của tôi đều có định dạng bí truyền mà Chrome không thể giải mã được. (Chúng là .wavs, nhưng lấy mẫu ở 96 kHz với mã hóa nổi 32 bit.)Định dạng tệp âm thanh được hỗ trợ cho Chrome?

Có cách nào để tôi truy vấn trình duyệt (Chrome) để tìm hiểu chính xác định dạng và mã hóa âm thanh nào hỗ trợ không?

CẬP NHẬT

Tôi đã tìm thấy một danh sách các định dạng file được hỗ trợ bởi Chrome ở đây: https://sites.google.com/a/chromium.org/dev/audio-video

Trả lời

3

Bạn có thể kiểm tra các loại điều này bằng cách cố gắng để tải một loạt các tập tin mẫu sử dụng một cấu trúc try...catch, và nhìn thấy mà loại file tải và loại nào không. Xem this tutorial để tải tệp bằng API âm thanh web trong Chrome.

+0

Điều này là thông minh, cảm ơn. Tôi vẫn rất ngạc nhiên rằng không có cách nào trực tiếp hơn để làm điều đó mặc dù ... –

0

Có! Tôi không biết làm thế nào đáng tin cậy này, nhưng ...

// Need to check the canPlayType first or an exception 
// will be thrown for those browsers that don't support it  

var myAudio = document.createElement('audio'); 

if (myAudio.canPlayType) { 
    // Currently canPlayType(type) returns: "", "maybe" or "probably" 
    var canPlayMp3 = !!myAudio.canPlayType && "" != myAudio.canPlayType('audio/mpeg'); 
    var canPlayOgg = !!myAudio.canPlayType && "" != myAudio.canPlayType('audio/ogg; codecs="vorbis"'); 
} 

Kể từ khi chúng ta đang nói về các tập tin WAV ở đây, tôi sẽ sử dụng sau đây:

audio/vnd.wave, audio/wav, audio/wave, audio/x-wav

Điều tốt nhất để làm là để tìm ra những gì kiểu MIME của tập tin của bạn là (nên là một trong những phần trên), và sau đó kiểm tra cho rằng với một cái gì đó như thế này:

var canPlayWav = !!myAudio.canPlayType && "" != myAudio.canPlayType('MIME_TYPE_HERE'); 
if (canPlayWav) { dothis(); } else { dothat(); } 

tôi hy vọng điều này sẽ giúp!

Nguồn: http://html5doctor.com/native-audio-in-the-browser/

+0

Oh crap, không đọc của bạn câu hỏi cẩn thận - bạn đang nói về một API mới hơn cho thao tác âm thanh .... dù bằng cách nào, tôi nghĩ rằng

+0

Hey Albert - cảm ơn phản hồi. Đây là một khởi đầu tốt nhưng tôi thực sự hy vọng tìm được cách để có được thông tin chi tiết hơn một chút từ trình duyệt. Tôi biết rằng nó có thể chơi một số loại tệp .wav, nhưng tôi cần phải tìm ra tốc độ lấy mẫu, độ sâu bit và mã hóa mẫu mà nó có thể xử lý, cũng như số lượng kênh âm thanh mà nó hỗ trợ. Bạn có bất kỳ ý tưởng làm thế nào để trích xuất loại thông tin đó? –

0

Sử dụng Lo-Dash:

(function(){ 
    var a = document.createElement('audio'), 
     types = _(navigator.mimeTypes).pluck('type'), 
     isAudio = /^audio\//, canPlay = {}; 
    if (a && a.canPlayType) { 
    types 
     .push('audio/flac', 'audio/opus', 'audio/webm', 'audio/ogg', 'audio/midi') 
     .flatten() 
     .uniq() 
     .each(function(type){ 
     if (isAudio.test(type)) { 
      canPlay[type] = !!a.canPlayType(type); 
     } 
     }); 
    } 
    return canPlay; 
})(); 
Các vấn đề liên quan