首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >webkitAudioContext on iOS (15.4.1)与MediaElementSource的螺距波动

webkitAudioContext on iOS (15.4.1)与MediaElementSource的螺距波动
EN

Stack Overflow用户
提问于 2022-05-05 19:21:56
回答 2查看 173关注 0票数 3

我正在制作一个网站,播放mp3音频,然后在X秒后消失。我通过在间隔内操作卷来使用常规的audio标记实现,但是这个解决方案不能在iOS上工作,因为卷是一个只读属性。我发现可以使用Safari来实现这一点,但是我需要为AudioContext /iOS使用webkitAudioContext。

我已经实现了一个解决方案使用context.createMediaElementSource,但音频音高是到处都是。当音频第一次开始播放时,它会被设置几秒钟,而且当你最小化应用程序并重新打开它时,它会再次升级。我猜这是因为内部时钟不对齐,所以播放速度加快了,以适应这种情况--但无论哪种方式,这个应用程序都不能真正解决这个问题。

我在iOS上发现了关于围绕这个API的其他扭曲/嗡嗡问题的讨论,但是没有提到音调问题。我找到了一个答案提交这里,它链接到一个显示完全相同音频音调问题的小提琴。

我尝试过使用createBufferSource而不是createMediaElementSource来实现这个问题,但使用该api管理音频(检查/设置当前位置、检查/设置暂停/播放/停止状态e.t.c)似乎是不可能的。

我创建了一个CodeSandbox演示,也上传了一个视频演示,你可以听到音高的变化是非常明显的。有谁知道这在整个iOS设备上会有多一致(我想,非常一致),有人能提出修复/解决办法吗?

EN

回答 2

Stack Overflow用户

发布于 2022-07-21 18:24:22

我也是。开始的几秒钟,然后回到正常状态。最简单的实现就是不起作用。

代码语言:javascript
复制
<div>    
<div id="playbutton">Play</div>
<audio  id="player" controls src="myaudio.wav"></audio> 
</div>

<script>
   var player = document.getElementById('player');
   var playbutton = document.getElementById('playbutton');
   var playStatus = 'paused';
   var audioSource = audioContext.createMediaElementSource(player);
   
   audioSource.connect(audioContext.destination); 

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

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

      } else {

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

Stack Overflow用户

发布于 2022-09-03 08:44:55

我想这是在WebKit的问题跟踪器上作为Bug 239696跟踪的。现在应该修好了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72132592

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档