弃用
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);
});
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. |
候选推荐 | 最初的规范。 |
| 桌面 | 移动 | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
addStream
弃用
|
Chrome 24 | Edge 15 | Firefox 22 | IE No |
Opera
43
|
Safari ? | WebView Android Yes | Chrome Android Yes | Firefox Android 44 |
Opera Android
43
|
Safari iOS ? | Samsung Internet Android 6.0 |
完整支持
不支持
兼容性未知
弃用。不要用于新网站。
见实现注意事项。
RTCPeerConnection
canTrickleIceCandidates
connectionState
currentLocalDescription
currentRemoteDescription
getDefaultIceServers()
iceConnectionState
iceGatheringState
localDescription
onaddstream
onconnectionstatechange
ondatachannel
onicecandidate
oniceconnectionstatechange
onicegatheringstatechange
onidentityresult
onidpassertionerror
onidpvalidationerror
onnegotiationneeded
onpeeridentity
onremovestream
onsignalingstatechange
ontrack
peerIdentity
pendingLocalDescription
pendingRemoteDescription
remoteDescription
sctp
signalingState
addIceCandidate()
addStream()
addTrack()
close()
createAnswer()
createDataChannel()
createOffer()
generateCertificate()
getConfiguration()
getIdentityAssertion()
getReceivers()
getSenders()
getStats()
getStreamById()
getTransceivers()
removeStream()
removeTrack()
restartIce()
setConfiguration()
setIdentityProvider()
setLocalDescription()
setRemoteDescription()
MediaDevices.getUserMedia()
Navigator.mediaDevices
RTCCertificate
RTCDTMFSender
RTCDTMFToneChangeEvent
RTCDataChannel
RTCDataChannelEvent
RTCDtlsTransport
RTCErrorEvent
RTCIceCandidate
RTCIceTransport
RTCPeerConnectionIceErrorEvent
RTCPeerConnectionIceEvent
RTCRtpReceiver
RTCRtpSender
RTCRtpTransceiver
RTCSctpTransport
RTCSessionDescription
RTCStatsEvent
RTCStatsReport
RTCTrackEvent