2012-03-07 2 views
1

모두jquery로 새로운 오디오 소스를 재생하는 경우

간단한 뮤직 플레이어를 썼지 만 한 가지 문제가 있습니다. 내가 파일을 PHP에서 새로운 소스를 얻으려면 아약스를 사용하고 괜찮 작동하지만, 어떻게 새로운 노래를 재생할 수 있는지 모르겠다. 간단한 audio.play()가 작동하지 않습니다. 나는 복구를 시도 할이 내 코드입니다 :

function timer(){ 
    timeleft = $("span#timeleft"); 
    slider = $("div#slider"); 
    $(audio).bind('timeupdate', function(){ 
     var rem = parseInt(audio.duration - audio.currentTime, 10), 
     pos = (audio.currentTime/audio.duration) * 315, 
     mins = Math.floor(rem/60, 10), 
     secs = rem - mins*60; 

     timeleft.text('- ' + mins + ':' + (secs > 9 ? secs : '0' + secs)); 
     slider.css({width: pos + 'px'}); 
    }); 
} 

$(document).ready(function(){ 
    audio = $("audio#audio-player-header").get(0); 

    $("div#controls").click(function(){ 
     $(this).toggleClass("pause"); 
     if(audio.paused){ 
      audio.play(); 
      timer(); 
     }else{ 
      audio.pause(); 
     } 
    }); 

    audio.addEventListener("ended", function(){ 
      $.post("php/player.php", function(result){ 
       audio.src = result; 
      }); 
      audio.play(); // here is the problem 
      timer(); 
    }); 
}); 

그리고 HTML :

<div id="player"> 
        <div id="controls" class="play"></div> 
        <div id="music-title"> 
         <div id="slider"> 
          <div id="wrap-music-title"> 
           <p id="music-title">Jamie T - Chaka Demus</p> 
          </div> 
         </div> 
        </div> 
        <span id="timeleft"></span> 
        <div id="player-header"> 
        <audio id="audio-player-header" src="music/rock/Jamie T - Chaka Demus.mp3"> 
        </audio> 
        </div> 
       </div> 

내가 유래 및 웹 몇 가지 솔루션을 찾았지만 아무것도 여기에 작동하지 않습니다. 모든 도움을 미리 감사드립니다.

답변

0

ajax 호출이 반환되기 전에 audio.play()을 호출하는 경쟁 조건을 만들었습니다. (A) 오디오 canplay 이벤트를 듣고 재생을 시작하거나 (B) 오디오 태그의 autoplay 속성을 설정할 수 있습니다.

옵션 A :

audio.addEventListener("ended", function(){ 
    $.post("php/player.php", function(result){ 
     audio.src = result; 
    }); 
}); 

audio.addEventListener("canplay", function(){ 
    audio.play(); 
}); 

옵션 B :

<audio autoplay id="audio-player-header" src="music/rock/Jamie T - Chaka Demus.mp3"> 
+0

브라이언, 신속하게 답변을 주셔서 감사합니다. 이전에 자동 재생에 대해 생각해 보았습니다. 첫 번째 노래가 끝났을 때도 코드에 넣으려고했으나 작동하지 않습니다. 난 이미 당신의 제안을 확인했지만 여전히 플레이어가 첫 번째 노래 후에 멈추고있다, 내 웹 사이트는 다음과 같습니다 http://wovich.net46.net/musicon/ 어쩌면 그것은 나를 화나게 할 수도 있습니다 : D – Wovich

+0

두 번째 MP3에 뭔가 문제가 있습니다. 당신은로드하려고합니다 ('http://wovich.net46.net/musicon/music/rap/Lady Leshur Lego.mp3'). 브라우저에서 URL을 입력하면 해당 파일이 재생되지 않습니다. 귀하의 페이지에서 코드를 가져 와서 유효 한 오디오 파일로 src를 업데이트하면 제대로 작동합니다. –

+0

하나의 유효한 출처가 코드의 문제점을 고려하여 2 주간을 보냈다는 것을 믿을 수 없습니다. 다시 한번 도움을 주셔서 감사합니다. 솔루션은 너무 가깝습니다. – Wovich

관련 문제