gpt4 book ai didi

javascript - mediaDevices.getUserMedia,音频播放完毕后开始麦克风录音,Safari问题

转载 作者:行者123 更新时间:2023-12-02 23:31:40 40 4
gpt4 key购买 nike

有一个我不清楚的情况。

我想要的是:播放音频,音频播放完毕后,开始麦克风录音。

问题:在 FF 和 Chrome 中,代码运行良好。然而,在 Safari 上,当音频停止播放并且麦克风录音功能开始时,音频会同时再次播放。

开始和结束钩子(Hook)是用 jQuery 完成的。这是结束的绑定(bind)。

var on_audio_stop = function() {
start_microphone_recording();
}
$( 'audio' ).bind( 'ended', on_audio_stop );

start_microphone_recording 函数调用一个函数,其中更改了图标,然后调用了 init_recording,仅此而已,所以我没有包括那个。

启动麦克风功能:
function init_recording() {
AudioContext = window.AudioContext || window.webkitAudioContext;

context = new AudioContext();

processor = context.createScriptProcessor( buffer_size, 1, 1 );

processor.connect( context.destination );

var handle_success = function ( stream ) {
global_stream = stream;

input = context.createMediaStreamSource( stream );

input.connect( processor );

processor.onaudioprocess = function ( e ) {
microphone_process( e );
};
};

navigator.mediaDevices.getUserMedia( constraints ).then( handle_success );
}

在 Safari 中激活 mic 时,会执行“播放”绑定(bind)功能。我试过使用 pause() 并静音但不起作用。还尝试删除音频标签并从音频标签中清除 src。

任何人都知道 Safari 为什么要这样做以及解决方案可能是什么?

例子:
我在 html 的 AUDIO 标记中设置了 5 个 MP3 音频,我一个一个地播放,我运行“init_recording”函数,Safari 将同时播放所有 5 个 MP3 音频,同时麦克风开始录制.

最佳答案

事实证明,Safari 的解决方案是不设置 src属性。

如果您有一个或多个 audio标签内联,删除 src来自 audio 的属性标记,例如设置数据属性,如 data-src .然后用JS在点击播放时,将URL添加到src的音频标签。

关于播放功能:

audio.pause();
audio.load(); // Load the audio URL that was added to the src tag.
audio.play();

或插入整个 audio通过 JS 标记。

关于javascript - mediaDevices.getUserMedia,音频播放完毕后开始麦克风录音,Safari问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52165484/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com