2017-04-14 2 views
0

내가 3 연속 오디오 파일 (아주 작은 사람, 단지 ~ 900ms 파일)을 재생하는 응용 프로그램을 만들고 싶어, 그래서 나는이 코드를 썼다 :iPhone의 Safari에서 오디오를 만들려면 어떻게 하나씩 많은 오디오를 실행합니까?

function playAudio() { 
      audioLinksArray.forEach(function(audioLink, index, array){ 
       setTimeout(function(){ 
        // Find the audio element to play 
        document.getElementById('audio'+index).play(); 
       }, 900*index); 
      }); 
     } 

이 데스크톱 브라우저에서 잘 작동을 (I 크롬에서 테스트 , 사파리, 파이어 폭스, 오페라). 그러나 iPhone에서 Safari를 열면 처음 두 개의 오디오 파일 만 재생하고 재생되지 않은 마지막 파일은 남겨 둡니다. 실제로 일어나는 것은 무엇이며이를 해결하기 위해 무엇을 할 수 있습니까?

+0

대신 여러가'Audio', 왜 당신은 단지 하나를 사용하고 잇달아 URL을 변경하지 마십시오 사용? –

+0

@Derek 朕 會 功夫 귀하의 모델 코드에 감사드립니다 –

답변

0

이 작업을 시도 할 수 있습니다 :

audioLinksArray = [0, 1, 2] 
 

 
function playAudio() { 
 
    var last = audioLinksArray.length - 1; 
 
    var audioElements = new Array(last + 1); 
 
    audioLinksArray.forEach(function(audioLink, index, array){ 
 
    var audio = audioElements[index] = document.getElementById('audio' + index); 
 
    if (index === last) return; 
 
    audio.addEventListener('ended', function() { 
 
     audioElements[index + 1].play(); 
 
    }); 
 
    if (!index) audio.play(); 
 
    }); 
 
}
<audio controls id="audio0" src="//upload.wikimedia.org/wikipedia/commons/f/f6/Voice_of_Zonotrichia_albicollis.ogg"></audio><br> 
 
<audio controls id="audio1" src="//upload.wikimedia.org/wikipedia/commons/6/68/Turdus_merula_male_song_at_dawn%2820s%29.ogg"></audio><br> 
 
<audio controls id="audio2" src="//upload.wikimedia.org/wikipedia/en/4/45/ACDC_-_Back_In_Black-sample.ogg"></audio><br> 
 

 
<button onclick="playAudio()">Play all</button>

+0

어쨌든, iPhone 용 Safari에서는 첫 번째 비디오를 재생하고 다른 사람들은 사용하지 않은 채로 남겨 둡니다 ... –

관련 문제