Tag: webrtc

使用libjingle在Android上创build一个带有“自定义”捕获器的WebRTC VideoTrack

如何使用“自定义”video捕获器创buildVideoTrack并提供帧? 创buildVideoTrack的经典方法是: 1 – 获取一个VideoCapturer实例 VideoCapturer capturer = VideoCapturer.create(name); 2 – 创build一个VideoSource VideoSource videoSource = peerconnectionFactory.createVideoSource(capturer, videoConstraints); 3 – 使用video源创build一个VideoTrack VideoTrack videoTrack = peerconnectionFactory.createVideoTrack("Label", videoSource); 4 – 将音轨添加到MediaStream 我想知道是否有办法改变第一步 。 而不是使用本机Capturer实例,使用Android之一,并使用callback将帧提供给VideoTrack: public void onPreviewFrame(byte[] data, Camera camera) { // provide the frames to the VideoTrack } 有什么build议么?

WebRTC使用TCP还是UDP?

这听起来像一个非常基本的问题,但我需要一个确认 WebRTC是否使用TCP或UDP作为其对等传输? 我怎么知道 ? 我看了有可靠性模式和DTLS协议,它们是如何影响的? 媒体和数据通道的传输是否相同? 如何在TCP和UDP之间切换? 我问这是因为我知道浏览器对并行连接的数量有限制(我想他们谈论TCP),也许UDP连接不受限制。

NodeJS和RED 5媒体服务器通过RTMP

这更多的是一个概念性的问题,而不是直接的“如何做到这一点”。 一般来说,可以通过HTML5和nodeJS / binaryJS实现类似Flash的解决scheme来stream式传输audio(独立于从哪里获取stream数据,例如webRTC或其他)。 如果是这样,你会怎么做呢? 在这里find的和从2010年开始只有一个关于stackoverflow的查询。自那时起,NodeJS和HTML5已经成长和成熟了。 人们通常做的事情是:当使用多媒体stream(即video或audio)到服务器时,在getUserMedia()完全到达之前,在当前时间点肯定没有什么比Flash 更快的 – 这实际上可能需要一段时间直到99浏览器用户的百分比将可以使用它。 将数据stream式传输到服务器的一般做法是使用客户端Flash或Flex应用程序,然后连接到像RED5 , FMS或Wowza这样的RTMP协议驱动的媒体服务器。 例如,通过RTMP发送麦克风input的客户端应用程序可能看起来像(简化版) import flash.net.NetStream; private var myMic:Microphone; private var nc:NetConnection; private var ns:NetStream nc = new NetConnection(); ns = new NetStream(nc); nc.connect(rtmp://localhost/serverApp); myMic = Microphone.getMicrophone(); ns.attachAudio(myMic); 与服务器应用程序一起,可以很容易地将数据传输到服务器。 我想要做的是:在nodeJS上运行应用服务器(可能实现socketIO和binaryJS ),以捕获传入的RTMPstream。 就像是 //require var rtmp = require('node-rtmp'), var fs = require('fs'); //rtmp server address var […]

WebRTC AGC(自动增益控制)

我正在testingWebRTC AGC,但是我必须做一些错误的事情,因为信号只是未经修改而通过。 以下是我如何创build和初始化AGC: agcConfig.compressionGaindB = 9; agcConfig.limiterEnable = 1; agcConfig.targetLevelDbfs = 9; /* 9dB below full scale */ WebRtcAgc_Create(&agc); WebRtcAgc_Init(agc, minLevel, maxLevel, kAgcModeFixedDigital, 8000); WebRtcAgc_set_config(agc, agcConfig); 然后,对于每个10ms的示例块,我执行以下操作: WebRtcAgc_Process(agc, micData, NULL, 80, micData, NULL, micLevelIn, &micLevelOut, 0, &saturationWarning); 其中micLevelIn设置为0。 有人能告诉我我做错了什么吗? 我预计全面的正弦音调将被削弱到目标DBFS的水平; 和低级正弦波(即-30dBFS)将被放大以匹配目标DBFS级别。 但是,这不是我所看到的。

WebRTC – 可扩展的实况stream广播/多播

[! ]问题仍然是开放的 问题: WebRTC为我们提供点对点video/audio连接。 这是完美的P2P呼叫,环聊。 但是广播(一对多,例如1比10000)呢? 假设我们有一个广播员“B”和两个与会者“A1”,“A2”。 当然,这似乎是可以解决的:我们只需要将B与A1连接,然后将B与A2连接。 所以B将video/audiostream直接发送到A1,将另一个stream发送到A2。 B发送stream两次。 现在让我们想象一下有10000个与会者:A1,A2,…,A10000。 这意味着B必须发送10000个stream。 每个stream〜40KB / s,这意味着B需要400MB / s的传出网速来维持这个广播。 不能接受的。 原始问题(已过时) 是否有可能以某种方式解决这个问题,所以B只发送一个stream在一些服务器上,与会者只是从这个服务器拉这个stream? 是的,这意味着在这个服务器上的传出速度必须很高,但我可以维护它。 或者,也许这意味着破坏WebRTC的想法? [! ]最新的问题 解决CPU /带宽 – 是否有无服务器解决scheme(又名组播或类似的东西)? 解决CPU – 是否有可能只编码一次stream并发送给同行? 解决CPU /带宽 – 多播是绝对有可能的,但它实际上在实际工作(延迟,networking不稳定)? 笔记 对于最终用户而言,由于糟糕的用户体验,Flash无法满足我的需求。 解 26.05.2015 – 目前还没有针对WebRTC的可扩展广播的解决scheme,根本不使用媒体服务器。 在市场上有服务器端解决scheme以及混合(p2p +服务器端,取决于不同的条件)。 有一些有前途的技术,虽然像https://github.com/muaz-khan/WebRTC-Scalable-Broadcast但他们需要回答这些可能的问题:延迟,整体networking连接稳定性,可扩展性公式(他们不是无限的 – 可扩展的)。

WebRTC vs Websockets:如果WebRTC可以做video,audio和数据,为什么我需要Websocket?

所以我即将build立一个聊天应用程序,将允许video,audio和文字。 我花了一些时间研究Websockets和WebRTC来决定使用哪一个。 由于WebRTC中有很多video和audio应用程序,这听起来像是一个合理的select,但是我应该考虑其他事情吗? 随意分享您的想法。 像: 由于新的WebRTC仅在某些浏览器上可用,而Websocket似乎在更多浏览器中。 可伸缩性 – Websockets使用服务器进行会话,WebRTC似乎是p2p 多路复用/多个聊天室 – 在Google+环聊中使用,即时通讯仍然在查看演示应用程序如何实施 服务器 – Websockets需要RedisSessionStore或RabbitMQ跨多台机器进行扩展

如何使用webRTC和基于服务器的对等连接logging摄像头和audio

我想logging用户的networking摄像机和audio,并将其保存到服务器上的文件。 这些文件将能够被提供给其他用户。 我没有回放的问题,但我有问题获取内容logging。 我的理解是,getUserMedia .record()函数尚未写入 – 至今只有一个提议。 我想在我的服务器上使用PeerConnectionAPI创build一个对等连接。 我知道这有点不好意思,但我认为应该可以在服务器上创build一个对等体,并logging客户端对等体发送的内容。 如果这是可能的,我应该能够将这些数据保存到FLV或任何其他video格式。 我的偏好实际上是录制networking摄像头+audio客户端,以允许客户重新录制video,如果他们不喜欢上传之前的第一次尝试。 这也会导致networking连接中断。 我已经看到了一些代码,允许通过将数据发送到canvas来loggingnetworking摄像头中的单个“图像” – 这很酷,但我也需要audio。 这是我目前为止的客户端代码: <video autoplay></video> <script language="javascript" type="text/javascript"> function onVideoFail(e) { console.log('webcam fail!', e); }; function hasGetUserMedia() { // Note: Opera is unprefixed. return !!(navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia); } if (hasGetUserMedia()) { // Good to go! } else { […]

为什么WebRTC需要Signaling Server?

WebRTC是定义对等之间的媒体数据的传输方法的协议。 了解。 它也可以在RTP / UDP之上工作。 这也理解了。 在讨论有关Signaling Server时,提到它需要做兼容性检查/信道启动等工作。 我的问题是:上面说过, 1)这是否意味着信令服务器是强制性的? 2)WebRTC是否有智能与对方直接对话而无需签名服务器? 3)与webRTC相关的每一篇文章都是从“浏览器到浏览器通信之间?”这个状态开始的,这是不是说webRTC不能在a)带摄像头的embedded式设备[无浏览器],b)浏览器到别的地方使用。 4)另外,如果使用webRTC与传统的浏览器stream式传输方式相比有什么收获? [我真的不知道传统的方式]。 我知道这是一个理论问题。 虽然,我看到这种问题可能在不同的背景下浮现在互联网上。 希望这个问题给一些架构级别的答案。 谢谢。

停止/closures由navigator.getUserMedia打开的摄像头

我使用下面的JavaScript代码打开了一个networking摄像机: navigator.getUserMedia 有没有JavaScript代码停止或closures摄像头? 感谢大家。