标签: licode

如何通过WebRTC将视频对等设备录制到服务器时处理数据包丢失

我们正在使用licode MCU将录制的视频从Google Chrome流式传输到服务器.Google Chrome没有第二个实例来处理反馈,服务器必须执行此操作.

我们遇到的一件事是当丢包丢失帧并且视频不同步时.这会导致非常差的视频质量.

视频质量差

在ExternalOutput.cpp中,有一个地方可以检测到当前收到的数据包没有单调增加.在这里你可以看到它丢弃当前帧并重置搜索状态.

我想知道如何修改它,以便它可以从这个数据包丢失中恢复.是否在当前序列号上提交NACK数据包?我还读到有一种模式,谷歌Chrome提交RED数据包(冗余)来处理数据包丢失.

google-chrome packet-loss webrtc licode

8
推荐指数
1
解决办法
972
查看次数

如何在WebRTC视频录制中使用PLI数据包

我们正在使用licode MCU将视频从Google Chrome流式传输到服务器并进行录制.这里棘手的部分是只涉及一个Chrome浏览器,因此服务器端代码必须处理向客户端发送反馈.

我们添加了服务器端代码,每5秒向客户端发送一次REMB(带宽)数据包.这导致客户端增加比特率以使视频质量良好.

我们用PLI数据包做了类似的事情,试图提高视频质量.录制的视频有块状文物,看起来不太好.当前代码每0.8秒发送一次PLI,这导致客户端发送一个关键帧(全帧视频).这解决了较差的视频质量,因为它强制关键帧,但是当丢包(wifi网络)时,它很快就会变坏.

我的问题是如何使用这些PLI数据包?

我认为PLI意味着:

PLI    - Picture Loss Indication
Run Code Online (Sandbox Code Playgroud)

google-chrome webrtc licode

6
推荐指数
1
解决办法
1111
查看次数

Licode Erizo.Stream视频帧质量

我使用Licode它是开源WebRTC通信平台.我想降低视频质量(视频帧位大小).

流看起来像这样:

var stream = Erizo.Stream({ 
     audio:true,
     video:video_constraints,
     data: true, 
     attributes: {name:'myStream', type:'public'}
});
Run Code Online (Sandbox Code Playgroud)

可以像这样获取VideoFrame:

var bitmap;
var canvas = document.createElement('canvas');
var context = canvas.getContext('2d');

canvas.id = "testCanvas";
document.body.appendChild(canvas);

setInterval(function() {
  bitmap = stream.getVideoFrame();
  canvas.width = bitmap.width;
  canvas.height = bitmap.height;
  context.putImageData(bitmap, 0, 0);
}, 100);
Run Code Online (Sandbox Code Playgroud)

我发送画布(一个视频帧):

 var bitmap;
  var canvas = document.createElement('canvas');
  var context = canvas.getContext('2d');

  setInterval(function() {
        canvas.width = video.clientWidth;
        canvas.height = video.clientHeight;
        context.drawImage(video, 0, 0, canvas.width, canvas.height);
        mydata = canvas.toDataURL("image/jpeg");
        erizoStream.sendData({ base64:mydata});
    }, 200);
Run Code Online (Sandbox Code Playgroud)

erizoStream.sendData({ …

performance video-streaming html5-video webrtc licode

5
推荐指数
1
解决办法
1383
查看次数

WebRTC 视频会议应用程序 - 星型拓扑:如何开始?

我正在开发一个使用 WebRTC 的用于教育目的的视频会议应用程序。它需要在星形拓扑中完成,因为它最多连接 20 个参与者。

从概念上讲它很容易理解,但我不知道如何开始,因为我没有任何示例。

所有客户端将使用 WebRTC 连接到服务器,服务器将以特定布局混合视频流并将其发送回所有客户端。以下是我的问题/困难:

  • 服务器部分如何实现?什么是最好的技术(例如 NodeJS)?是否有类似星型拓扑应用的简单示例?

  • 我们如何开始编写 MCU 代码?有例子吗?或者更容易定制像 Licode/Lynckia 这样的开源 MCU?

  • 我如何估计我们将用作 MCU 服务器的正确 AWS EC2 实例类型?

  • 我如何估算将在会议的 1 小时内传输的数据传输成本(大小,以 GB/TB 为单位)?

非常感谢,卡洛斯

amazon-ec2 node.js video-conferencing webrtc licode

0
推荐指数
1
解决办法
1440
查看次数