Các thẻ <audio> iOS13 đã bị hỏng được sử dụng làm bộ đệm âm thanh được kết nối với ngữ cảnh âm thanh chưa?


9

Chúng tôi hiện đang phát triển một trang web cho phép người dùng phát các thẻ âm thanh đơn giản được kết nối với audiocontext. Chúng tôi nhận thức được các vấn đề kỹ thuật với IOS, chẳng hạn như phát lại được bắt đầu bằng cử chỉ của người dùng. Mọi thứ đều hoạt động tốt lên đến IOS12. Bây giờ iOS13 đã hết, không còn hoạt động nữa.

Nó hoạt động trên tất cả các máy tính để bàn, Android và IOS cho đến IOS13.

Bất cứ ý tưởng về những gì đang xảy ra?

Không có thông báo lỗi trong bảng điều khiển khi gỡ lỗi với Safari trên Máy tính để bàn được kết nối với iphone.

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
Ứng dụng của tôi đã bị phá vỡ là tốt. Nhưng tôi thấy bạn tạo ngữ cảnh âm thanh trước khi nhấp, nó cũng không được phép trong ios 12.
shukshin.ivan

Các audioContext.resume();dòng nên chăm sóc đó, nhưng tôi nghĩ rằng những gì sau phải ở trong quyết tâm hứa hẹn, như thế này:. AudioContext.resume () sau đó (function () {player.play () playbutton.innerHTML = "Tạm dừng"; playStatus = 'isPlay';}
Paulie

Tôi đã thêm lời hứa trong codepen. Nhưng có hoặc không có lời hứa, nó sẽ thay đổi bất cứ điều gì.
JohnLoyd

Tôi có cùng một vấn đề. Chỉ khác là thẻ âm thanh được hiển thị động trong một ứng dụng trang duy nhất. Tôi đã làm cho nó hoạt động một phần bằng cách tạo srctĩnh với một URL đầy đủ. Tuy nhiên, nó chỉ hoạt động nếu bạn rời Safari và sau đó mở lại. Hành vi rất lạ.
Quần

Câu trả lời:


2

Thật không may, AudioContext.createMediaElementSourceđã bị hỏng kể từ khi phát hành iOS 13. Lỗi đã được sửa: https://bugs.webkit.org/show_orms.cgi?id=203435 . Đó là trong Safari Technology Preview 99 .


Có vẻ như các nhà phát triển từ webkit đã sửa nó vài ngày trước, tuy nhiên, tôi vẫn gặp sự cố trên phiên bản iOS mới nhất. Nó sẽ được sửa chữa với bản phát hành ios tiếp theo hoặc bản phát hành webkit? Tôi bối rối.
Ô

0

Sự cố này đã được báo cáo nhầm là đã sửa trong iOS 13.3.1 (ngày 28 tháng 1 năm 2020). Tuy nhiên, như bất cứ ai cũng có thể đọc từ báo cáo lỗi WebKit 203435 này , vấn đề vẫn còn đó kể từ ngày 7 tháng 4 năm 2020, ngày phát hành của iOS 13.4.1.

Báo cáo lỗi không cung cấp thêm thông tin nào liên quan đến ngày ước tính lỗi này sẽ được sửa. Đáng buồn thay, 80% người dùng iOS (khoảng 14% tổng thị trường di động, theo Statcorer) đã bị mất khả năng sử dụng WebAudio trên thiết bị của họ trong nhiều tháng nay.

Điều khiến các nhà phát triển của chúng tôi tệ hơn là Safari không báo cáo bất kỳ lỗi nào. Vì vậy, thậm chí cố gắng tưởng tượng một dự phòng là không thể hoặc rất khó, dù sao đi nữa.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.