首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更改VideoTrack对象的MediaStream

更改VideoTrack对象的MediaStream
EN

Stack Overflow用户
提问于 2014-05-06 14:06:39
回答 2查看 6.4K关注 0票数 5

简单地说,我正在尝试更改VideoTrack MediaStream 对象的.

(文件:API接口)

我有一个MediaStream对象__o_jsep_stream_audiovideo,它由sipml库创建。

__o_jsep_stream_audiovideo看起来是这样的:

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

根据文献资料

MediaStream由零或多个MediaStreamTrack对象组成,表示各种音频或视频轨道。

所以我们应该可以在这个流中添加更多的曲目。

我正在尝试转换/交换来自另一个流的VideoTrack。其他流(streamB)起源于Chromes ScreenCapture api (label: "Screen")

我试过:

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

似乎没有任何效果。

我还尝试直接分配videoTracks (我知道这是绝望的)。

我一定漏掉了什么明显的东西,你能给我指明正确的方向吗?

我在跑

  • Chrome (34.0.1847.131版)和
  • 金丝雀( 36.0.1976.2版金丝雀)
  • OSX 10.9.2
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-05-06 14:57:45

在MediaStream对象不要发出重新谈判的信号上添加和删除轨道,并且MediaStream有两个同类型铬轨道也存在问题。

您可能应该将单独的纵隔添加到对等连接中,以便它能够触发重新协商并处理流。铬中的添加/删除功能非常天真,不太细粒度,您应该尽可能地远离它。

票数 1
EN

Stack Overflow用户

发布于 2018-05-03 23:59:02

当你谈到改变视频轨道时,我们指的是两个方面:

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

WebRTC获得了新的版本,因为它不推荐addStream/removeStream。然而,更重要的是他们引入了新的接口replaceTrack

代码语言:javascript
复制
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分配给新捕获的流。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23497037

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档