标签: webrtc

WEBRTC STUN stun.l.google.com:19302

我刚刚下载了一个视频聊天项目.它使用STUN服务器并指定URL stun:23.21.150.121.如何使用自己的服务器而不是STUN服务器?我需要输入什么而不是此URL?

stun node.js webrtc

17
推荐指数
3
解决办法
4万
查看次数

使用本地服务器的ApprtcDemo可以在浏览器之间工作,但不适用于浏览器本机

我正在开发一个聊天应用程序并完成它.现在我也想实现视频聊天.经过研究很多,我决定选择"WebRTC"库.

我做了什么?

1)能够在本地服务器上运行AppRtcDemo,并且它在浏览器之间正常工作.

参考:http://www.webrtc.org/reference/getting-started

2)能够构建Android AppRtcDemo.But当我运行时说"Cross origin not support".

经过研究,我在webrtc讨论中发现,为了解决这个问题,我需要设置自己的转向服务器.

3)所以我安装了webrtc推荐的最新rfc5766TurnServer.我成功运行了转向服务器.

参考:http://code.google.com/p/rfc5766-turn-server/

我对ApprtcDemo(web)和(Android)进行了以下更改,以便与我的Turn服务器一起使用

1)apprtc.py

更换:

turn_url = 'https://computeengineondemand.appspot.com/'
turn_url = turn_url + 'turn?' + 'username=' + user + '&key=4080218913'
Run Code Online (Sandbox Code Playgroud)

指向我的转弯服务器:

turn_url = 'http://192.168.5.85:3478/?service=turn&username=biraj'
Run Code Online (Sandbox Code Playgroud)

2)index.html

更换:

var pcConfig = {{ pc_config|safe }};
Run Code Online (Sandbox Code Playgroud)

附:

var pcConfig = {"iceServers": [{"url": "stun:stun.l.google.com:19302"},            {"url":"turn:biraj@192.168.5.85:3479", "credential":"0x5b04123c3eec4cf0be64ab909bb2ff5b"}]};
Run Code Online (Sandbox Code Playgroud)

Android的

1)AppRTCDemoActivity.java

更换:

roomInput.setText("https://apprtc.appspot.com/?r=");
Run Code Online (Sandbox Code Playgroud)

使用我的本地apprtc服务器:

roomInput.setText("http://192.168.5.86:8080/?r=");
Run Code Online (Sandbox Code Playgroud)

2)AppRTCClient.java

private PeerConnection.IceServer requestTurnServer(String url){}功能上

更换:

connection.addRequestProperty("origin", "https://apprtc.appspot.com");
Run Code Online (Sandbox Code Playgroud)

附:

connection.addRequestProperty("origin", "http://192.168.5.86:8080");
Run Code Online (Sandbox Code Playgroud)

3)/assets/channel.html

更换:

<script src="https://apprtc.appspot.com/_ah/channel/jsapi"></script>
Run Code Online (Sandbox Code Playgroud)

附: …

android webrtc apprtcdemo rfc5766turnserver

17
推荐指数
1
解决办法
8400
查看次数

使用WebRTC将数据与视频同步

我正在使用WebRTC从服务器向客户端浏览器发送视频(使用本机WebRTC APIMCU WebRTC像Kurento这样的服务器).

在将其发送给客户端之前,视频的每个帧都包含元数据(如字幕或任何其他应用内容).我正在寻找一种方法将这些元数据发送到客户端,使其保持同步(到实际呈现的时间).此外,我希望能够从客户端(通过Javascript)访问此数据.

我想到的一些选项:

  • 通过WebRTC DataChannel发送数据.但我不知道如何确保数据在每帧的基础上同步.但是我找不到一种方法来确保数据通道和视频通道发送的数据是同步的(再次,我希望获得单帧的精确级别).
  • 以某种方式手动将数据发送到客户端(WebRTC DataChannel,websockets等),其时间戳与视频的时间戳匹配.但是,即使Kurento或其他中间服务器保留视频中的时间戳信息,根据以下答案,没有应用方法从javascript获取视频时间戳: 如何使用webRTC Javascript API访问传出音频RTP时间戳在发送方和接收方的传入音频RTP时间戳?.我想过使用标准视频元素的timeupdate事件,但我不知道它是否适用于帧的精确级别,我不确定它在实时视频中的含义与WebRTC中的相同.
  • 手动发送数据并将其作为另一个应用程序附加到视频TextTrack.然后使用onenteronexit同步读取它:http://www.html5rocks.com/en/tutorials/track/basics/.它仍然需要精确的时间戳,我不知道如何知道什么是时间戳,以及Kurento是否按原样传递它们.
  • 使用WebRTC的统计API手动计算帧数(使用getstats),并希望此API提供的信息是准确的.

最好的方法是什么,以及如何解决我提到的问题?

编辑:需要具有适当帧的元数据的精确同步(在不超过单帧的分辨率下).

javascript video html5 video-streaming webrtc

17
推荐指数
1
解决办法
4315
查看次数

Jitsi Videobridge谈判

我正在尝试将Jitsi Videobridge集成到我现有的WebRTC应用程序中.

现在信号是相对简单的,提供,答案,候选人,我们正在运行.

我找不到关于如何集成像Jitsi这样的选择性转发解决方案的简单文档或教程,一切似乎都说得太高了(见这里).

有人可以具体地向我解释提供,答案,候选模型如何与Jitsi一起改变,我怎样才能通过视频桥建立一对一的呼叫?

我目前的分析,我认为我应该打Jitsi通过REST接口来获得候选人和换出host,srvflx以及relay从视频桥的那些候选人我产生当前.这甚至是在正确的轨道上?

rest webrtc jitsi

17
推荐指数
0
解决办法
978
查看次数

WebRTC MediaStream的麦克风活动级别

我想了解如何最好地获取MediaStreamTrackChrome/Canary中音频javascript对象的麦克风活动级别.该MediaStreamTrack对象是MediaStream返回的音轨getUserMedia,作为WebRTC javascript API的一部分.

javascript audio microphone webrtc getusermedia

16
推荐指数
3
解决办法
9486
查看次数

如何在javascript for webrtc中避免回声和噪音

我正在尝试实现一个基于webrtc的聊天室.我在笔记本电脑中遇到了以下问题.如果没有连接到任何其他对等体,只需使用getUserMedia(),我就可以获得本地视频流.

当我取消静音时,回声发生了.

然后我戴上耳机,发现有继续的噪音.我可以清楚地听到我的声音.

我试图调低音量,但它不起作用.

提前致谢.

audio video chat webrtc

16
推荐指数
2
解决办法
8924
查看次数

更改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 - 禁用所有音频处理

我正在尝试通过webrtc获得一个干净的音频通道.通过getUserMedia mediaconstraints对象,我设置了以下选项:

constraints: {
        audio: {
            mandatory: {
                echoCancellation: false,
                googEchoCancellation: false,
                googAutoGainControl: false,
                googAutoGainControl2: false,
                googNoiseSuppression: false,
                googHighpassFilter: false,
                googTypingNoiseDetection: false,
                //googAudioMirroring: false // For some reason setting googAudioMirroring causes a navigator.getUserMedia error:  NavigatorUserMediaError
            }
        },
        video: false
    },
Run Code Online (Sandbox Code Playgroud)

这极大地改善了音频质量,但是仍然存在音频处理,其导致一些测试样本以高频噪声的形式致残音频.

有一个Chrome标记--use-file-for-fake-audio-capture,如http://peter.sh/experiments/chromium-command-line-switches/#use-file-for-fake-audio-capture所述,它允许通过文件输入进行测试.如标志描述中所述,必须禁用所有音频处理或音频失真 - 因此似乎有其他选项可用于此目的.

我也试过--disable-audio-track-processing --audio-buffer-size=16 --enable-exclusive-audioChrome标志,但似乎还有一些音频处理.

有没有办法禁用仍然存在的音频处理(最好是通过JS API)?

audio firefox html5 google-chrome webrtc

16
推荐指数
2
解决办法
3222
查看次数

DOMException:处理ICE候选者时出错

DOMException: Error processing ICE candidate当我尝试添加冰候选人时,我收到此错误.这是候选人:

候选人:1278028030 1 udp 2122260223 10.0.18.123 62694 typ host generation 0 ufrag eGOGlVCnFLZYKTsc network-id 1

而且,它并不总是发生 - 其他时间一切顺利.我无法重现一致的模式,它会抛出此错误.任何想法如何解决这个/调试它将不胜感激!

webrtc

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

iOS 11(Beta)中的webKit是否支持WebRTC?

我有一个在iOS11(Beta)上使用Safari工作正常的网址音频/视频工作正常.但是当我用WKWebView加载这个URL时,它给我一个错误"不兼容的浏览器",当我在WebKit中检查我的浏览器版本时,它显示"iOS 11上的基于WebKit的浏览器"

所以真正的问题是,Apple是否已将此更改包含在iOS 11开发人员BETA的WKWebview webkit(应该与Safari相同)中?

safari webkit ios webrtc wkwebview

16
推荐指数
3
解决办法
9064
查看次数