html - 不带<audio>元素而听到的WebRTC音频(RTCMultiConnection)

标签 html audio webrtc

即使似乎没有在DOM中插入音频元素,也会听到音频。

场景:

  • 创建不带流的PeerConnection
  • 添加流,但是禁用将MediaElements(音频,视频)添加到DOM的代码

  • 问题:
  • 流结束后,可以从耳机(或扬声器)听到音频。

  • 应该发生什么:
  • 因为我没有在dom上附加任何内容,所以我希望没有声音被听到。

  • Code for replicating the scenario
    // <body>
    //   <script src="https://cdn.webrtc-experiment.com/RTCMultiConnection.js"></script>
    //   <button id="start">Start!</button>
    // </body>
    
    $('#start').click(function() {
      var NO_MEDIA_SESSION = {video: false, audio: false, oneway: true};
    
      var caller = new RTCMultiConnection('lets-try');
      caller.session = NO_MEDIA_SESSION;
      caller.dontAttachStream = true;
      caller.onstream = function() { console.log("Got stream but not attaching") };  
    
      var receiver = new RTCMultiConnection('lets-try');
      receiver.session = NO_MEDIA_SESSION;
      receiver.dontAttachStream = true;
      receiver.onstream = function() { console.log("Got stream but not attaching") };  
    
      caller.open();
      receiver.connect();
    
      receiver.onconnected = function() {
        console.log("Connected!");
        caller.addStream({audio: true});
      }
    });
    

    我很感兴趣如何在没有音频DOM元素的情况下听到MediaStream?
    如果有任何RTCMultiConnection专家回答,那么也许给我指出如何避免音频流可听? (我想获取信息流,并稍后自己附加)。

    最佳答案

    RTCMultiConnection会即时创建mediaElement,以确保仅在媒体流开始流动时才触发onstream事件。

    connection.onstream = function(event) {
        event.mediaElement.pause(); // or volume=0
    
        // or
        event.mediaElement = null;
    
        // or
        delete event.mediaElement;
    };
    

    更新:

    使用以下代码段:
    var connection = new RTCMultiConnection();
    
    connection.session = {
        data: true
    };
    
    btnOpenRoom.onclick = function() {
        connection.open('roomid');
    };
    
    btnJoinRoom.onclick = function() {
        connection.join('roomid');
    };
    
    btnAddAudioStream.onclick = function() {
        connection.addStream({
            audio: true
        });
    };
    
    btnAddAudioVideoStream.onclick = function() {
        connection.addStream({
            audio: true,
            video: true
        });
    };
    

    关于html - 不带<audio>元素而听到的WebRTC音频(RTCMultiConnection),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25863543/

    相关文章:

    Javascript document.getElementById 不打印到元素 - 奇怪的问题

    javascript - 防止 javascript 加载多次

    vb.net - VB.Net同时播放mp3

    ios - 如何在 Safari 浏览器上获取 WebRTC 日志

    javascript - 模拟删除文件事件

    javascript - 为什么这个 JavaScript 会失败?

    c# - 在 WPF 中作为资源播放声音

    android - 尝试播放声音时ImageButton崩溃

    javascript - Websockets 比 WebRTC 更快?

    android - 应用程序在为 webRTC 加载 native 库时崩溃