2011-10-05 4 views
2

HTML5 앱의 특정 이벤트에서 재생할 mp3 사운드 클립이 몇 개 있습니다. 태그가 없으면 스크립트는 처음에 Audio 객체를 만들고 (각 mp3에 하나씩) 파일을로드합니다. 사운드를 재생해야 할 때이 오브젝트 중 하나에서 play()를 호출하기 만하면됩니다.은 iPhone에서 HTML5 오디오로 사운드 클립을 재생하는 데 문제가 있습니다.

이 기능은 Chrome 데스크톱에서도 정상적으로 작동하지만 iPod touch에서는 매우 일관성이 없으므로 일부 사운드는 재생되지 않으며 오류 경고가 나타납니다.

여기 제가 문제를보기 위해 설정 한 작은 스크립트가 있습니다.이 파일은 3 오디오 파일을 포함하여 soundtest.staticloud.com에 호스팅되어 있으므로 아이폰/무엇이든간에 확인할 수 있습니다.

var snd = []; 

window.onload = function() { 
    for(var i = 0; i < 3; i++) { 
     snd[i] = new Audio("snd" + i + ".mp3"); 
     snd[i].load(); 
    } 
} 

function sound(n) { 
    snd[n-1].play(); 
} 

내가 잘못 했나요?

답변

3

iDevices에서 오디오 문제가 많았습니다. 다음에 시작하기 전에 마지막으로 재생 한 클립을 비우는 것입니다. 또한, 방금 오디오 객체가 하나 뿐이므로 소스가 변경되어 내 솔루션이 다음과 같이 보입니다.

<html> 
<body> 
<audio></audio> 
etc 
</body> 
<script type="text/javascript"> 
var sounds=[]; 

window.onload = function() { 
    for(var i = 0; i < 3; i++) { 
     sounds[i] = "snd" + i + ".mp3"; 
    } 
} 

function sound(n){ 
snd=document.getElementsByTagName("audio")[0]; 
snd.pause(); //-----------------PAUSE THE LAST (WHICH MAY BE LONG DONE) 
snd.src=''; //-----------------BLANK SRC 
snd.src=sounds[n-1]; //---------REPLACE WITH NEW SOUND 
snd.load(); 
snd.play(); 
} 
</script> 
</html> 
+0

시도해 보려고 업로드했습니다 ... snd0.mp3이 실패하지만 iOS에 해당 파일에 문제가 있다고 가정합니다. 나머지 두 개는 버튼 탭 이후 오래 걸리는 것을 제외하고는 정상적으로 작동하며, 오디오 파일이 재생 될 때마다 다운로드되는 것처럼 후속 탭에서 더 빨리 작동하지 않습니다. 이게 정상인가요? 그 주위에 어떤 방법이 있습니까? Thanks –

+0

cache.manifest를 사용하여 파일을 사용자 장치에 저장할 수 있습니다 (오프라인 기능 사용 가능). –

+0

흥미 롭습니다. 아직 작동시키지 못했지만, 계속 살펴볼 것입니다. 감사합니다 ... –

관련 문제