IOS13에서 오디오 컨텍스트에 연결된 오디오 버퍼로 사용되는 <audio> 태그가 손상 되었습니까?


9

현재 오디오 컨텍스트에 연결된 간단한 오디오 태그를 재생할 수있는 웹 사이트를 개발 중입니다. 우리는 사용자 제스처로 시작된 재생과 같은 IOS의 기술적 문제를 알고 있습니다. IOS12까지 모든 것이 잘 작동합니다. 이제 IOS13이 종료되었으므로 더 이상 작동하지 않습니다.

그것은 모든 데스크탑, 안드로이드 및 IOS에서 IOS13까지 작동합니다.

무슨 일인지에 대한 아이디어가 있습니까?

iPhone에 연결된 데스크탑의 Safari로 디버깅 할 때 콘솔에 오류 메시지가 없습니다.

https://codepen.io/gchad/pen/WNNvzzd

<!DOCTYPE html>
        <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" dir="ltr">
<body>

<div>
  <h1>Play Audio Tag connected to audio context</h1>
  <div id="playbutton" style="width:100px; height:100px; background:blue; color:white; margin:auto; text-align: center; font-size: 30px; cursor: pointer;">
    Play
  </div>

  <audio  id="myPlayer" crossorigin="anonymous" >
    <source src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/858/outfoxing.mp3"/>
      <!--http://commondatastorage.googleapis.com/codeskulptor-assets/week7-brrring.m4a-->
  </audio> 
</div>

<script>

var player = document.getElementById('myPlayer'),
playbutton = document.getElementById('playbutton'),
playStatus = 'paused';

var audioContext = new(window.AudioContext || window.webkitAudioContext)();
var audioSource = audioContext.createMediaElementSource(player); 
audioSource.connect(audioContext.destination); 

playbutton.addEventListener('click',function(ev){

  if( playStatus == 'paused'){

    audioContext.resume();
    player.play();
    playbutton.innerHTML = "Pause";
    playStatus = 'isPlaying';

  } else {

      player.pause();
      playbutton.innerHTML = "Play";
      playStatus = 'paused';
  }
});
</script>

</body>


1
광산 앱도 깨졌습니다. 그러나 클릭하기 전에 오디오 컨텍스트를 생성하는 것을 보았지만 iOS 12에서도 허용되지 않았습니다.
shukshin.ivan

audioContext.resume();라인은 알아서해야하지만, 나는 다음과 같이 약속의 해결에 있어야 다음 무엇을 생각한다. audioContext.resume () 다음 (함수 () {player.play () playbutton.innerHTML = "일시 중지"; playStatus = 'isPlaying';}
Paulie

이미 코드 펜에 약속을 추가했습니다. 그러나 약속의 유무에 관계없이 아무것도 변경되지 않습니다.
JohnLoyd

나는 같은 문제를 가지고있다. 유일한 차이점은 오디오 태그가 단일 페이지 앱에서 동적으로 렌더링된다는 것입니다. src전체 URL로 정적을 작성하여 부분적으로 작동하게했습니다 . 그러나 Safari를 종료했다가 다시 열어야 만 작동합니다. 매우 이상한 행동.
바지

답변:


2

불행히도 AudioContext.createMediaElementSourceiOS 13 릴리스 이후로 깨졌습니다. 버그가 수정되었습니다 : https://bugs.webkit.org/show_bug.cgi?id=203435 . 이 글은 다음의 사파리 기술 미리보기 (99) .


며칠 전에 웹킷 개발자가 수정 한 것처럼 보이지만 최신 iOS 버전에서 여전히 문제가 발생합니다. 다음 iOS 릴리스 또는 웹킷 릴리스로 수정 될 예정입니까? 혼란 스러워요.
우산

0

이 문제는 iOS 13.3.1 (2020 년 1 월 28 일)에서 해결 된 것으로 잘못보고되었습니다. 그럼에도 불구하고 누구나이 WebKit 버그 보고서 203435 에서 읽을 수 있듯이 2020 년 4 월 7 일 iOS 13.4.1의 출시 날짜에 여전히 문제가 있습니다.

버그 보고서는이 버그가 수정 될 예정 날짜에 관한 추가 정보를 제공하지 않습니다. 안타깝게도 iOS 사용자의 80 % (Statcounter에 따르면 전체 모바일 시장의 약 14 %)가 현재 몇 달 동안 장치에서 WebAudio를 사용하지 못하도록 실수를 저지른 적이 있습니다.

우리 개발자에게 상황을 악화시키는 것은 Safari가 오류를보고하지 않는다는 것입니다. 따라서 어쨌든 폴백을 상상하려고 시도하는 것은 불가능하거나 매우 어렵습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.