2011-12-14 3 views
5

Web Audio API을 사용하고 싶습니다. 불행히도 내 오디오 파일은 모두 Chrome에서 디코딩 할 수없는 형식으로되어 있습니다. (그들은 .wav이지만 96kHz에서 32 비트 플로트 인코딩으로 샘플링되었습니다.)Chrome에서 지원하는 오디오 파일 형식은 무엇입니까?

내 브라우저 (Chrome)에서 지원하는 오디오 형식과 인코딩을 정확하게 찾을 수있는 방법이 있습니까?

UPDATE는

여기 크롬에 의해 지원되는 파일 형식의 목록을 발견했습니다 https://sites.google.com/a/chromium.org/dev/audio-video

답변

3

당신은 try...catch 구조를 사용하여 샘플 다양한 파일을로드하려고으로 이런 종류의 물건을 테스트 할 수 있고, 보는. Chrome에서 Web Audio API로 파일을로드하는 방법은 this tutorial을 참조하십시오. 소호 - 대시 사용

+0

이것은 영리합니다. 감사합니다. 나는 아직도 그것을하는 더 직접적인 방법이 없다는 것에 놀라는데 ... –

0

이 있습니다!

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

할 수있는 가장 좋은 것은이다 : 우리가 여기 WAV 파일에 대해 얘기하고 있기 때문에 나는이 내가 사용하는 것,

// 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"'); 
} 

... 어떻게 신뢰성이는 모르겠지만 파일의 MIME 유형 (위 중 하나를해야한다) 무엇인지 파악하고이 같은 뭔가가 확인 :

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

난이 도움이되기를 바랍니다!

출처 : 부하를 파일 형식과 그렇지 않은 http://html5doctor.com/native-audio-in-the-browser/

+0

오 쓰레기를 읽을하지 않았다 당신의 신중하게 질문하십시오 - 오디오 조작을위한 최신 API에 대해 이야기하고 있습니다 .... 어느 쪽이든, 저는 일반

+0

안녕하세요 앨버트 - 답변 해 주셔서 감사합니다. 이것은 좋은 출발이지만 실제로 브라우저에서 좀 더 자세한 정보를 얻을 수있는 방법을 찾고자했습니다. 몇 가지 .wav 파일 형식을 재생할 수 있지만 어떤 샘플 속도, 비트 심도 및 샘플 인코딩을 처리 할 수 ​​있는지, 지원하는 오디오 채널 수를 알아야합니다. 그 종류의 정보를 추출하는 방법을 알고 있습니까? –

0

비 프로그래밍 방법은 해당 사이트 것

(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; 
})(); 
관련 문제