【问题标题】:Redirect output audio to input将输出音频重定向到输入
【发布时间】:2019-05-12 13:07:37
【问题描述】:

我已经实现了一个连接客户和客户的 WebRTC 应用;它运行得非常顺利,但现在我需要播放带有法律条款的音频,客户应该听到他们需要说类似I agree 的话。

我在许多论坛上搜索如何将输出重定向到输入(麦克风),我找到了如下解决方案:

  • 获取输入源;
  • 将我的音频文件转换为缓冲区或类似的东西;
  • 将此“缓冲区”发送到输入源。

可行吗?

代码应如下所示:

navigator.getUserMedia({audio: true}, 
    function(stream){
        //what should I do here? Already have the mp3 buffer here
    },
    function(err){
        console.log('Cagou demais', err)
    }
)

我完全不知道如何实现它。我发现的许多主题都是 2013 年的。

【问题讨论】:

  • navigator.getUserMedia 已弃用。使用navigator.mediaDevices.getUserMedia。见:developer.mozilla.org/en-US/docs/Web/API/MediaDevices/…
  • “将输出重定向到输入”,这没有任何意义。你不是说要记录输入吗?
  • @Brad 不。我希望 MP3 应该被客户收听。当我在我的计算机上播放音频文件时,客户听不到音频文件。如果我尝试录制,MP3 会被客户收听吗?
  • 您只是想播放音频文件?只需使用<audio> 标签。这些 WebRTC 东西是干什么用的?
  • 您是否正在尝试播放音频文件,以便 WebRTC 呼叫中的远程人员可以听到它?

标签: javascript webrtc html5-audio audio-streaming


【解决方案1】:

您需要使用 Web Audio API 创建音频上下文,然后将其输出发送到远程,而不是直接在 MediaStream 中将麦克风发送到远程。

基本上,创建一个音频上下文,然后调用audioContext.createMediaStreamSource(microphoneStream)

接下来,通过audioContext.createMediaStreamDestination() 创建一个 MediaStreamAudioDestinationNode。连接您的麦克风和您想要输出的任何其他节点,例如用于录制的缓冲区节点。

当您进行 WebRTC 调用时,使用来自网络摄像头的轨道和 destinationNode.stream 实例化一个新的 MediaStream。在您的通话中发送新的结果流,它会将所有内容组合在一起。

【讨论】:

  • 伙计,这听起来很棒。如果 javascripts 应用程序在同一页面但不同的 iframe 中,它会工作吗?
  • @placplacboom 细节在这里很重要,所以要么发布一个新问题,详细说明这一点,要么自己试试看。我之前已经成功地在框架/窗口之间共享流,但我必须传递 blob URL 才能做到这一点。
猜你喜欢
  • 1970-01-01
  • 2021-04-29
  • 2015-08-14
  • 2011-08-21
  • 1970-01-01
  • 1970-01-01
  • 2021-05-25
  • 2018-07-18
  • 2014-04-30
相关资源
最近更新 更多