我正在制作一个网站,播放mp3音频,然后在X秒后消失。我通过在间隔内操作卷来使用常规的audio标记实现,但是这个解决方案不能在iOS上工作,因为卷是一个只读属性。我发现可以使用Safari来实现这一点,但是我需要为AudioContext /iOS使用webkitAudioContext。
我已经实现了一个解决方案使用context.createMediaElementSource,但音频音高是到处都是。当音频第一次开始播放时,它会被设置几秒钟,而且当你最小化应用程序并重新打开它时,它会再次升级。我猜这是因为内部时钟不对齐,所以播放速度加快了,以适应这种情况--但无论哪种方式,这个应用程序都不能真正解决这个问题。
我在iOS上发现了关于围绕这个API的其他扭曲/嗡嗡问题的讨论,但是没有提到音调问题。我找到了一个答案提交这里,它链接到一个显示完全相同音频音调问题的小提琴。
我尝试过使用createBufferSource而不是createMediaElementSource来实现这个问题,但使用该api管理音频(检查/设置当前位置、检查/设置暂停/播放/停止状态e.t.c)似乎是不可能的。
我创建了一个CodeSandbox演示,也上传了一个视频演示,你可以听到音高的变化是非常明显的。有谁知道这在整个iOS设备上会有多一致(我想,非常一致),有人能提出修复/解决办法吗?
发布于 2022-07-21 18:24:22
我也是。开始的几秒钟,然后回到正常状态。最简单的实现就是不起作用。
<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>发布于 2022-09-03 08:44:55
我想这是在WebKit的问题跟踪器上作为Bug 239696跟踪的。现在应该修好了。
https://stackoverflow.com/questions/72132592
复制相似问题