IOS13 มีการใช้แท็ก <audio> ที่เสียหายเป็นบัฟเฟอร์เสียงที่เชื่อมต่อกับบริบทเสียงหรือไม่


9

ขณะนี้เรากำลังพัฒนาเว็บไซต์ที่อนุญาตให้ผู้ใช้เล่นแท็กเสียงธรรมดาที่เชื่อมต่อกับออดิโอไฟล์ เราตระหนักถึงปัญหาทางเทคนิคของ IOS เช่นการเล่นที่เริ่มโดยท่าทางผู้ใช้ ทุกอย่างทำงานได้ดีจนถึง IOS12 ตอนนี้ IOS13 หมดแล้วไม่มีอะไรทำงานอีกต่อไป

ใช้งานได้บนเดสก์ท็อป Android และ IOS ทั้งหมดจนถึง IOS13

ความคิดเกี่ยวกับสิ่งที่เกิดขึ้น?

ไม่มีข้อความแสดงข้อผิดพลาดในคอนโซลเมื่อทำการดีบั๊กด้วย Safari บนเดสก์ท็อปที่เชื่อมต่อกับ 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
แอพของฉันก็พังแล้วเช่นกัน แต่ฉันเห็นคุณสร้างบริบทเสียงก่อนคลิกมันไม่ได้รับอนุญาตใน ios 12 ด้วย
shukshin.ivan

audioContext.resume();บรรทัดควรดูแลว่า แต่ฉันคิดว่าสิ่งต่อไปนี้ควรจะอยู่ในการแก้ไขสัญญาเช่นนี้. audioContext.resume () แล้ว (ฟังก์ชั่น () {player.play () playbutton.innerHTML = "หยุดชั่วคราว"; playStatus = 'isPlaying';}
Paulie

ฉันเพิ่มสัญญาใน codepen แล้ว แต่มีหรือไม่มีสัญญาก็จะเปลี่ยนแปลงอะไร
JohnLoyd

ผมมีปัญหาเดียวกัน. ความแตกต่างเพียงอย่างเดียวคือแท็กเสียงจะแสดงผลแบบไดนามิกในแอปหน้าเดียว ฉันได้รับบางส่วนโดยการทำให้srcคงที่ด้วย URL เต็ม อย่างไรก็ตามจะทำงานได้ก็ต่อเมื่อคุณออกจาก Safari แล้วเปิดอีกครั้ง พฤติกรรมที่แปลกมาก
กางเกง

คำตอบ:


2

แต่น่าเสียดายที่AudioContext.createMediaElementSourceได้รับการหักตั้งแต่การเปิดตัวของ iOS 13. ข้อผิดพลาดได้รับการแก้ไข: https://bugs.webkit.org/show_bug.cgi?id=203435 มันอยู่ในซาฟารีเทคโนโลยีแสดงตัวอย่าง 99


ดูเหมือนว่า devs จาก webkit จะแก้ไขได้ไม่กี่วันที่ผ่านมาอย่างไรก็ตามฉันยังคงประสบปัญหากับเวอร์ชัน iOS ล่าสุด มันจะได้รับการแก้ไขด้วยการปล่อย iOS ครั้งต่อไปหรือการปล่อย webkit? ฉันสับสน
ร่ม

0

ปัญหานี้ได้รับการรายงานผิดพลาดตามที่ได้รับการแก้ไขใน iOS 13.3.1 (28 มกราคม 2020) อย่างไรก็ตามทุกคนสามารถอ่านจากรายงานบั๊กของ WebKit 203435ปัญหายังคงมีอยู่ ณ วันที่ 7 เมษายน 2020 ซึ่งเป็นวันวางจำหน่ายของ iOS 13.4.1

รายงานข้อผิดพลาดไม่ได้ให้ข้อมูลเพิ่มเติมใด ๆ เกี่ยวกับวันที่ประมาณข้อผิดพลาดนี้จะได้รับการแก้ไข น่าเศร้าที่ผู้ใช้ iOS 80% (ประมาณ 14% ของตลาดอุปกรณ์พกพาทั้งหมดอ้างอิงจาก Statcounter) ได้รับความผิดพลาดจากการใช้ WebAudio บนอุปกรณ์ของพวกเขาเป็นเวลาหลายเดือนแล้ว

สิ่งที่ทำให้สิ่งที่แย่กว่านั้นสำหรับนักพัฒนาของเราคือ Safari ไม่ได้รายงานข้อผิดพลาดใด ๆ ดังนั้นแม้จะพยายามจินตนาการถึงทางเลือกที่เป็นไปไม่ได้หรือยากมากอยู่ดี

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.