我正在尝试使用 Kurento 将 webRTCendpoint 桥接到 RTPendpoint。webRTCendpoint 客户端是一个 Chrome 浏览器。RTPendpoint 客户端是一个 SIP 服务器(代理/B2BUA)。这是我拥有的基本代码或伪代码(我在我的应用服务器中使用 Kurento-client.js):
//On receipt of offer from the WebRTC Browser-Peer
mySignalling.on('sdpOffer', function(sdpOffer) { //Action starts!
//Create Mediapipeline so that endpoints can be created
kurentoClient.create('MediaPipeline', function(error, pipeline) {
pipeline.create('webRtcEndpoint', function(error, myWebrtcEndpoint) {
//Get ICE Candidates from webRTC endpoint to send to browser
mySignalling.on('candidate', function(candidate) {
myWebrtcEndpoint.addIceCandidate(candidate);
});
myWebrtcEndpoint.on('OnIceCandidate', function(event) {
var candidate = kurento.register.complexTypes.IceCandidate(event.candidate);
mySignalling.send(candidate); //Send ICE candidate to webRTC browser peer
});
pipeline.create('rtpEndpoint', function(error,myRtpEndpoint) {
myWebrtcEndpoint.connect(myrtpEndpoint,function(error){ });
myWebrtcEndpoint.processOffer(sdpOffer, function(error, …Run Code Online (Sandbox Code Playgroud) 我正在使用英特尔 webRTC 库。https://software.intel.com/en-us/webrtc-sdk/
但是,它只会在特定手机上崩溃。
E/rtc: #
# Fatal error in ../../webrtc/api/java/jni/androidnetworkmonitor_jni.cc, line 195
# Check failed: !jni()->ExceptionCheck()
# Error during CallVoidMethod
Run Code Online (Sandbox Code Playgroud)
我看到我的设备收到了 SDP 报价并将其发送过来。但它似乎无法聚集任何冰候选者,并坠毁在那里。
运行安卓 5.0.2 的 LG G2 (LG-D800)。构建# LRX22G
我对 xmpp 和 webrtc 比较陌生。现在,我尝试使用 Jitsi Videobridge 和 prosody 创建简单的视频会议 Web 应用程序,我不想使用 jitsi-meet,因为我需要知道如何让 jitsi-videobridge 工作的基本知识。到现在为止,我可以通过韵律来接受 jitsi-videobridge 组件。所以当我运行./jvb.sh --domain=localhost --port=5347 --secret=componentsecret它会显示这些日志:
JVB 2017-04-21 10:52:53.798 INFO: [38]
org.jitsi.videobridge.xmpp.ComponentImpl.log() RECV: <iq id="f68D9-340"
type="result" to="jitsi-videobridge.localhost" from="localhost"/>
JVB 2017-04-21 10:53:03.801 INFO: [40]
org.jitsi.videobridge.xmpp.ComponentImpl.log() RECV: <iq id="f68D9-341"
type="result" to="jitsi-videobridge.localhost" from="localhost"/>
JVB 2017-04-21 10:53:13.801 INFO: [42]
org.jitsi.videobridge.xmpp.ComponentImpl.log() RECV: <iq id="f68D9-342"
type="result" to="jitsi-videobridge.localhost" from="localhost"/>
JVB 2017-04-21 10:53:23.801 INFO: [44]
org.jitsi.videobridge.xmpp.ComponentImpl.log() RECV: <iq id="f68D9-343"
type="result" to="jitsi-videobridge.localhost" from="localhost"/>
JVB 2017-04-21 10:53:33.801 INFO: [46]
org.jitsi.videobridge.xmpp.ComponentImpl.log() RECV: <iq id="f68D9-344"
type="result" …Run Code Online (Sandbox Code Playgroud) 我正在尝试在我的 Ubuntu 16.10 系统中安装Truffle。在此之前,我需要安装 node.js。不支持最新的 v8。所以我下载了 v7 并安装了它的build-essential工具。但是在安装 Truffle ( sudo npm install -g truffle) 时,我发现一条错误消息:
节点预gyp ERR!尝试下载(404):https : //node-webrtc.s3.amazonaws.com/wrtc/v0.0.61/Release/node-v51-linux-ia32.tar.gz
节点预gyp ERR!未找到 wrtc@0.0.61 和 node@7.10.0 (node-v51 ABI) 的预构建二进制文件(使用 node-gyp 回退到源代码编译)
然后,片刻之后,这个错误弹出:
npm WARN 可选 SKIPPING OPTIONAL DEPENDENCY: fsevents@^1.0.0 (node_modules/truffle/node_modules/chokidar/node_modules/fsevents):
npm WARN notsup 跳过可选依赖:fsevents@1.1.1 不受支持的平台:想要 {"os":"darwin","arch":"any"}(当前:{"os":"linux","arch": "ia32"})
npm 错误!Linux 4.4.0-59-generic npm ERR!argv "/usr/bin/nodejs" "/usr/bin/npm" "install" "-g" "truffle" npm ERR!node v7.10.0 npm ERR!npm v4.2.0 npm ERR!代码 ELIFECYCLE npm ERR!错误号 1
npm 错误!wrtc@0.0.61 安装:
node-pre-gyp install --fallback-to-build …
jsfiddle ( https://jsfiddle.net/kalyansai99/mm1b74uy/22/ ) 包含用户可以在手机的前后摄像头之间切换的代码。
在少数手机(Moto g5 plus、Moto E3 等 - Chrome 浏览器)和少数手机(Mi Redimi Note 4 - Chrome 浏览器)中,当我切换到后置摄像头时,它的工作正常,最初流正在加载轨道“readyState”作为“live”。但是当我要在视频播放器中播放流时,“readyState”变为“已结束”并且视频标签上显示黑屏。
不知道发生了什么。有什么线索吗?
JSF 中间代码
var player = document.getElementById('player');
var flipBtn = document.getElementById('flipBtn');
var deviceIdMap = {};
var front;
var constraints = {
audio: false,
video: {
frameRate: 1000
}
};
var gotDevices = function (deviceList) {
var length = deviceList.length;
console.log(deviceList);
for (var i = 0; i < length; i++) {
var deviceInfo = deviceList[i];
if (deviceInfo.kind === 'videoinput') {
if (deviceInfo.label.indexOf('front') …Run Code Online (Sandbox Code Playgroud)我过去在 WebRTC 上使用我非常熟悉的 C 服务器(Janus)工作,现在我想将 WebRtc 容量添加到 Live555,以便能够通过它流式传输一些视频。问题是我对 live555 缺乏文档感到不知所措(比 Janus 更糟糕)如果我可以恢复 live555 缺乏:
1- SDP 解析器/构建器
2- HTTP 信号解析器/生成器
我的问题是我是否看到所有缺失的或需要完成的?
如果有任何机会,有人可以给我一些提示。
更新之前WebRTC的依赖,我能够呈现WebRTC VideoTracks上SurfaceViewRenderer,像这样:
val videoView = findViewById<SurfaceViewRenderer>(R.id.surface_view_renderer)
videoTrack.addRenderer(VideoRenderer(videoView))
Run Code Online (Sandbox Code Playgroud)
由于SurfaceViewRenderer不再实现VideoRenderer.Callbacks接口,如何使用更新的 WebRTC 版本实现上述相同的行为?
我想将网络摄像头流作为纹理附加到aframe内的实体,这可能吗,我该怎么做?
我要使用的效果示例包括:
我有以下代码可以在我的 Google Chrome 浏览器中流式传输连接的视频源。WebRTC 的getUserMedia就是这样做的。以下代码片段用于配置我的外部相机设备的分辨率和帧速率。
function configureVideo()
{
const video_constraints ={};
//Create the following keys for Constraint
video_constraints.video = {};
//set camera name
video_constraints.video.deviceId = {};
video_constraints.video.deviceId.exact = <device_id_comes_here>
//set resolution Width
video_constraints.video.width = {};
video_constraints.video.width.exact = 640;
//set resolution height
video_constraints.video.height = 480;
video_constraints.video.height.exact = streamHeight;
//set fps
video_constraints.video.frameRate = 60;
video_constraints.video.frameRate.exact = streamFps;
console.log("Selected Contraints is :", video_constraints);
navigator.mediaDevices.getUserMedia(video_constraints).then(streamCallback).catch(handleError);
}
Run Code Online (Sandbox Code Playgroud)
是的,我成功地从我的外部相机设备流式传输视频。相机提供 2 种类型的帧格式 YUYV 和 BY8。但我真的不知道当前正在流式传输什么帧格式。
有什么方法可以在 WebRTC 中配置我感兴趣的视频帧格式。
我发现下面的 git 使用func capturer(_ capturer: RTCVideoCapturer, didCapture frame: RTCVideoFrame)of既简单又高效RTCVideoCapturerDelegate。你得到RTCVideoFrame然后转换CVPixelBuffer为修改。
https://gist.github.com/lyokato/d041f16b94c84753b5e877211874c6fc
但是,我发现 Chronium 说获得 PixelBuffer 的 nativeHandle 不再可用(链接如下)。我尝试了 frame.buffer.pixelbuffer...,但是,查看框架 > 标题 > RTCVideoFrameBuffer.h,我发现 CVPixelBuffer 也从这里消失了!
https://codereview.webrtc.org/2990253002
有什么好的方法可以转换RTCVideoFrame为CVPixelBuffer?或者我们有更好的方法来修改从 RTCCameraVideoCapturer 捕获的视频吗?
下面的链接建议直接修改 sdk,但希望我们可以在 Xcode 上实现这一点。
webrtc ×10
android ×2
javascript ×2
aframe ×1
c++ ×1
getusermedia ×1
ios ×1
jitsi ×1
kotlin ×1
kurento ×1
live555 ×1
lua ×1
mediastream ×1
node-gyp ×1
node.js ×1
npm ×1
prosody-im ×1
ubuntu ×1
xmpp ×1