弃用
This feature is no longer recommended. Though some browsers might still support it, it may have already been removed from the relevant web standards, may be in the process of being dropped, or may only be kept for compatibility purposes. Avoid using it, and update existing code if possible; see the 兼容性表格 at the bottom of this page to guide your decision. Be aware that this feature may cease to work at any time.

obsolete RTCPeerConnection 方法 addStream() adds a MediaStream as a local source of audio or video. Instead of using this obsolete method, you should instead use addTrack() once for each track you wish to send to the remote peer.

signalingState 被设为 closed InvalidStateError is raised. If the signalingState 被设为 stable , the event negotiationneeded is sent on the RTCPeerConnection to indicate that ICE negotiation must be repeated to consider the new stream.

句法

rtcPeerConnection.addStream(mediaStream);
					

参数

mediaStream
MediaStream object indicating the stream to add to the WebRTC peer connection.

返回值

None.

范例

This simple example adds the audio and video stream coming from the user's camera to the connection.

navigator.mediaDevices.getUserMedia({video:true, audio:true}, function(stream) {
  var pc = new RTCPeerConnection();
  pc.addStream(stream);
});
					

Migrating to addTrack()

Compatibility allowing , you should update your code to instead use the addTrack() 方法:

navigator.getUserMedia({video:true, audio:true}, function(stream) {
  var pc = new RTCPeerConnection();
  stream.getTracks().forEach(function(track) {
    pc.addTrack(track, stream);
  });
});
					

The newer addTrack() API avoids confusion over whether later changes to the track-makeup of a stream affects a peer connection (they do not).

The exception is in Chrome, where addStream() does make the peer connection sensitive to later stream changes (though such changes do not fire the negotiationneeded event). If you are relying on the Chrome behavior, note that other browsers do not have it. You can write web compatible code using feature detection instead:

// Add a track to a stream and the peer connection said stream was added to:
stream.addTrack(track);
if (pc.addTrack) {
  pc.addTrack(track, stream);
} else {
  // If you have code listening for negotiationneeded events:
  setTimeout(() => pc.dispatchEvent(new Event('negotiationneeded')));
}
// Remove a track from a stream and the peer connection said stream was added to:
stream.removeTrack(track);
if (pc.removeTrack) {
  pc.removeTrack(pc.getSenders().find(sender => sender.track == track));
} else {
  // If you have code listening for negotiationneeded events:
  setTimeout(() => pc.dispatchEvent(new Event('negotiationneeded')));
}
					

规范

规范 状态 注释
WebRTC 1.0: Real-time Communication Between Browsers
The definition of 'RTCPeerConnection.addStream()' in that specification.
候选推荐 最初的规范。

浏览器兼容性

The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request. 更新 GitHub 上的兼容性数据
桌面 移动
Chrome Edge Firefox Internet Explorer Opera Safari Android webview Chrome for Android Firefox for Android Opera for Android Safari on iOS Samsung Internet
addStream 弃用 Chrome 24 Edge 15 Firefox 22 IE No Opera 43
43
Promise-based version.
不支持 37 — 43
Safari ? WebView Android Yes Chrome Android Yes Firefox Android 44 Opera Android 43
43
Promise-based version.
不支持 37 — 43
Safari iOS ? Samsung Internet Android 6.0

图例

完整支持

完整支持

不支持

不支持

兼容性未知 ?

兼容性未知

弃用。不要用于新网站。

弃用。不要用于新网站。

见实现注意事项。

另请参阅

元数据

  • 最后修改: