gpt4 book ai didi

javascript - 更改 MediaStream 对象的 VideoTrack

转载 作者:搜寻专家 更新时间:2023-11-01 04:31:45 31 4
gpt4 key购买 nike

简而言之:我正在尝试更改 MediaStream 对象的 VideoTrack

(文档:https://developer.mozilla.org/en-US/docs/WebRTC/MediaStream_API)

我有一个 MediaStream 对象 __o_jsep_stream_audiovideo,它是由 the sipml library 创建的.

__o_jsep_stream_audiovideo 看起来像这样:

stream object

所以它有一个 AudioTrack 和一个 VideoTrack。起初,VideoTrack 来自用户相机(例如 label: "FaceTime Camera")。

根据 the Documentation :

A MediaStream consists of zero or more MediaStreamTrack objects, representing various audio or video tracks.

因此,我们应该可以向该 Stream 添加更多轨道。

我正在尝试将 VideoTrack 与另一个流中的 VideoTrack 切换/交换。另一个流 (streamB) 来自 Chromes ScreenCapture api (label: “屏幕”)

streamB

我试过:

__o_jsep_stream_audiovideo.addTrack(streamB.getVideoTracks()[0])

这似乎没有任何效果。

我也试过直接分配 videoTracks(我知道这很绝望)。

我一定遗漏了一些明显的东西,你能给我指出正确的方向吗?

我在运行

  • Chrome(版本 34.0.1847.131)和
  • 金丝雀(版本 36.0.1976.2 金丝雀)
  • 操作系统 10.9.2

最佳答案

当您谈论更改视频轨道时,我们指的是 2 个方面:

  1. 更改远程视频轨道(其他人可以从你那里看到什么)

WebRTC 获得了这样做的新版本,因为它弃用了 addStream/removeStream。然而,优秀的是他们引入了新的接口(interface)replaceTrack

stream.getTracks().forEach(function(track) {
// remote
qcClient.calls.values().forEach(function(call) {
var sender = call.pc.getSenders().find(function(s) {
return s.track.kind == track.kind;
});
sender.replaceTrack(track);
});
});
  1. 更改显示视频(您看到自己)

最好只添加一个新的视频元素(或使用现有的视频元素)但是将 srcObject 分配给新捕获的流

关于javascript - 更改 MediaStream 对象的 VideoTrack,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23497037/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com