相关疑难解决方法(0)

更改RTCPeerConnection的MediaStream

我想从音频/视频流更改为"屏幕共享"流:

peerConnection.removeStream(streamA) // __o_j_sep... in Screenshots below
peerConnection.addStream(streamB)  // SSTREAM in Screenshots below
Run Code Online (Sandbox Code Playgroud)
  • streamA 是来自我的相机和麦克风的视频/音频流.
  • streamB 是我从我的扩展中获得的屏幕截图.
  • 它们都是MediaStream对象,如下所示:

streamA

streamB

*1备注

但是,如果我删除streamApeerConnectionaddStream(streamB)喜欢上面好像没有什么改变.

以下按预期工作(两端的流被删除并重新添加)

peerConnection.removeStream(streamA) // __o_j_sep...
peerConnection.addStream(streamA) // __o_j_sep...
Run Code Online (Sandbox Code Playgroud)

更多细节

我发现这个例子是"反向"(从屏幕截图切换到带摄像头的音频/视频),但无法发现显着差异.

peerConnection RTCPeerConnection对象实际上是由这创造SIPML库 源可以在这里找到代码.我这样访问它:

var peerConnection = stack.o_stack.o_layer_dialog.ao_dialogs[1].o_msession_mgr.ao_sessions[0].o_pc
Run Code Online (Sandbox Code Playgroud)

(是的,这看起来不正确,但是没有正式的方法来访问Peer Connection,请参阅此处的讨论)和此处.

最初我试图用(视频)改变videoTrack of streamA videoTrack streamB.在这里查看问题.有人向我建议我应该尝试重新协商对等连接(通过删除/添加Streams),因为addTrack不会触发重新协商.

我也在这里寻求帮助,但维护者似乎很忙,没有机会回应.


*1 备注:为什么streamB没有videoTracks财产?流在HTML <video>元素中播放,似乎"有效".我是这样得到的:

navigator.webkitGetUserMedia({
  audio: false, …
Run Code Online (Sandbox Code Playgroud)

javascript google-chrome webrtc sipml

16
推荐指数
1
解决办法
6597
查看次数

WebRTC firefox约束

我目前在个人开发中使用WebRTC,一切正常.我从网络摄像头获取流,但现在我想使用约束getUserMedia().

var constraints = {
           audio: false,
           video: {
               mandatory : {
                     minWidth: 1280,
                     minHeight: 720 
               }
           }
};
Run Code Online (Sandbox Code Playgroud)

当我在Firefox中测试它时,它似乎忽略了约束.当我在Chrome或Opera上测试时,我的约束工作正常并且我的质量很好,有谁知道为什么?问题是Firefox?

谢谢你的建议

javascript firefox webrtc

10
推荐指数
2
解决办法
7770
查看次数

标签 统计

javascript ×2

webrtc ×2

firefox ×1

google-chrome ×1

sipml ×1