2016-07-15 4 views
1

내 HTML에 오디오 태그가 있고 그 안에 .wav가 들어 있습니다. Javascript에서는 오디오 태그를 선택하고 wav를 재생합니다. 키보드 키를 사용하여 트리거합니다. 예를 들어, 각 A 키를 누를 때마다 .wav를 재생/처음부터 소리를 재생합니다.)오디오가 자바 스크립트로 일시 중지되었을 때 '팝 노이즈'가납니다.

오디오 재생이 정상적으로 작동하며 일시 중지도. 그러나 재생 중 .wav를 직접 일시 중지하는 동안 팝 노이즈가 발생합니다.

var audio = document.getElementById(sound); 

if (!isPlaying(audio)) { 
    audio.play();  // works 
} else { 
    audio.pause(); // pops on this line; I checked with commenting below lines. 
    audio.currentTime = 0; 
    audio.play(); 
} 

나는 this answer을 발견하고, 지금까지 나는 즉시 0으로 볼륨을 설정하기 때문에, 그것은 무슨 일이 일어나고 이해; 그러나 나는 나의 경우를 위해 그것을 이해할 수 없었다. 나는 또한 audio.muted = true을 발견

좋은 접근하여 setInterval와 페이더를하지 않습니다 사용하고 볼륨을 일시 정지하기 전에를 사용하여 시도 (그냥 오디오를 재생하기 전에 audio.muted = false을 사용),하지만이 또한 팝 노이즈를 제공 믿고


업데이트 :

필자는이 문제를 해결하기 위해 페이드 아웃을 사용해야한다고 생각합니다. 오디오를 즉시 페이드 아웃하는 방법이 있습니까?

+0

에 현재 값에서 volume 속성을 애니메이션 .animate()을 사용할 수 있습니다 *이 왜 좋은 방법 아닌가요? –

+0

내가 말했던 것처럼 나는 확신하지 못한다. 나는 0.2 초 샷과 3 초의 오디오를 재생해야한다. 그래서 샘플 간격뿐만 아니라 간격을 설정하고 그에 따라 페이드 아웃을 트리거하면 3 초 및 0.2 초의 오디오에 대한 일반 코드를 가질 수 없습니다. 좋은 접근 방법이라면 명확하게 설명해 주시겠습니까? – senty

답변

2

업데이트 :

은 내가이 문제를 해결하기 위해 페이드 아웃 사용할 필요가 있다고 생각합니다. 오디오를 즉시 페이드 아웃 할 수 있습니까?

내가 setInterval을 가진 페이더를 사용하여 믿고 * 당신은 0

var audio = $("audio"); 
 
$("button").click(function() { 
 
    if (audio[0].volume > 0) { 
 
    audio.animate({volume:0}); 
 
    // call `.pause()` here 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<audio controls src="https://upload.wikimedia.org/wikipedia/commons/6/6e/Micronesia_National_Anthem.ogg"></audio> 
 
<button>fade out audio</button>

+0

대단히 멋지네요.이 애니메이션에는'controls = true'가 필요합니까? – zer00ne

+0

@ zer00ne _ "이 애니메이션에는'controls = true'가 필요합니까? _ 아니오 – guest271314

+0

볼륨을 미리 설정하지 않았습니다. 다시 가져올 기본 볼륨 수준은 무엇입니까? – senty

관련 문제