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

问题描述 投票:0回答:1

有一种情况我不清楚。

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

问题:在FF和Chrome中,代码运行得很好。但是,在Safari上,当音频停止播放并且麦克风录音功能开始时,音频将同时播放。

使用jQuery完成开始和结束挂钩。这是结束的绑定。

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中激活麦克风时,将执行“播放”绑定功能。我试过暂停()并静音但不起作用。还尝试从音频标签中删除音频标签并清除src。

任何人都有任何想法,为什么Safari正在做这个以及解决方案可能是什么?


示例:我在html的AUDIO标签中设置了5个MP3音频,我逐个播放,我运行“init_recording”功能,Safari将同时播放所有5个MP3音频,当麦克风启动时记录。

javascript audio safari getusermedia mediadevices
1个回答
0
投票

事实证明,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();

或者通过JS插入整个audio标签。

© www.soinside.com 2019 - 2024. All rights reserved.