![](https://img-blog.csdnimg.cn/20191108085455793.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
流媒体
流媒体
荆轲刺秦
欢迎关注我的个人微信公众号:我与风来;
谦虚,别浮躁;好学,别懒惰;律己,别拖延。
展开
-
基于webrtc的视频聊天室(一)之千里之行始于足下
在不采用流媒体的情况下,也能够实现视频聊天室;可这需要在客户端建立多个连接,对客户端要求很高(上行带宽以及浏览器编解码速度),所以引入 kurento 流媒体服务器来做中转,或许后续不仅仅只是做中转。流媒体服务器的选择更多的是因为它的文档全面,并且有提供了 Java Client API ,之前也有了解过 licode ,但文档太少,部署就耗费了我太多时间,后面发现它只能基于 node.js ...原创 2019-09-09 20:47:53 · 439 阅读 · 0 评论 -
基于webrtc的视频聊天室(二)之消息设计
通过建立 websocket 连接,来进行收发消息,服务端是在 handler 中处理接收的消息,通过 session 发送消息;客户端则通过事件回调函数来进行的。消息的分类设计哪怕只是想实现一个简单的聊天室,各种消息也不会少;先将消息分为以下四类:会话协商:用于 sdp协商的消息;一对一消息:在处理两个用户之间进行视频聊天所需要的消息。一对多消息:在处理直播间时所需要进行的消息交互...原创 2019-09-09 20:44:39 · 185 阅读 · 0 评论 -
基于webrtc的视频聊天室(三)之域和上下文设计
域(scope)的概念指的是 房间,准确的说应该是类似于房间。因为视频聊天室存在这样的情况:一对一,一对多和群组聊天。如果统一用房间表示也可以,不过会有很多冗余,所以这里按域设计,将各种情况,进行不同的处理。域的分类设计下面分析下各种情况:一对一聊天:需要实现客户端A和客户端B互相连接,那么该域需要两个webrtc 对象,互相连接。一对多聊天:需要实现客户端A和客户端B、C连接,但B、...原创 2019-09-10 19:11:41 · 153 阅读 · 0 评论 -
基于webrtc的视频聊天室(四)之用户设计
用户的设计主要是明确其生命周期及其需要持有的对象。用户的生命周期创建 websocket连接时,建立普通用户对象;申请通话时,等待对方响应;对方接受,如果为群组聊天,则将其更改为 GroupUser 对象;群组聊天比较特殊,原始的用户对象结构已经不满足。通话结束,根据域的情况,判断是否进行更改;如果为群组,则更改普通用户对象连接断开或者发生错误,销毁用户以及相关的域,域的销毁需要进...原创 2019-09-12 18:06:25 · 640 阅读 · 0 评论 -
基于webrtc的视频聊天室(五)之服务端设计
组件的描述已在前几个博文中给出。下面针对具体的流程给出详细描述。如何进行sdp协商建立任何聊天都需要保证服务端有相应的 WebRtc 对象,当然,客户端也需要建立对应的 WebRtc 对象,它们之间的关系可以参考我的这篇博文(kurento之WebRtcEndpoint到底是个啥)。建立 WebRtc 对象需要流媒体管道 (MediaPipeline ),同一域中的 流媒体管道应该是同一个;...原创 2019-09-12 18:06:30 · 367 阅读 · 0 评论 -
基于webrtc的视频聊天室(六)之客户端设计
客户端用 Vue 框架写的,分了8个自定义组件:container.vue 是其它组件的父组件,其中 WebRtcPeerSendRecv.vue 是共用组件,UserOpt 和OneToOneBoxContainer 组件用于一对一聊天,BroadcastRoomOpt 和 OneToManyBoxContainer 组件用于一对多聊天,MeetRoomOpt 和 ManyToManyBoxC...原创 2019-09-12 18:06:44 · 613 阅读 · 1 评论 -
WebRTC实现多人视频聊天之信令服务器设计
写在前面我一直认为在设计任何程序之前,应该有一套理论的支持。我们所需要做的只是将其实现,这与编程语言无关。我所要做的就如我的标题一样,如果你不了解信令服务器,希望你能先阅读下我的推荐博文(这可能会省下你不少查找资料的时间)。基础设想信令服务器主要负责转发 SDP ,当然,我也可以选择将我的业务逻辑写在里面(生产环境不推荐这样做)。选择基于Web Sockets主要是因为这块比较熟悉,...原创 2019-08-18 12:53:35 · 2485 阅读 · 1 评论 -
WebRTC实现多人视频聊天之客户端设计
写在前面在开始之前,需要对如何建立点对点连接有一个了解,参考我的另一篇博文:WebRTC之点对点连接。下图是来自参考博文中的一张图片。基础想法基础架构如下:客户端主要在于处理从WebSockets接收到的消息,并且有着发起连接和被动接受连接的功能。实现连接建立成功时,注册用户身份,表明想加入的房间号。ws.onopen = function () { ...原创 2019-08-18 12:54:11 · 1899 阅读 · 2 评论 -
WebRTC实现多人视频聊天
写在前面实现房间内人员的视频聊天,由于并未很完善,所以需要严格按照步骤来,当然基于此完善,就是时间的问题了。架构整个设计架构如下:图片来自于参考博文。我使用的是第一种Mesh 架构,无需任何流媒体服务器,直接利用成熟的WebRTC 协议。该体系架构基于从每一个发送者创建多个一对一 的数据流到每一个接收端。客户端创建多个对等连接,连接数量基于房间内的其它成员数。应用程序...原创 2019-08-18 12:54:54 · 7320 阅读 · 14 评论 -
ubuntu18.04 搭建 Kurento6.11.0
做为一位unix系统小白,在失败了N次以后,总算成功了;本文的安装顺序和官方文档一样,只在特别需要注意的地方进行了说明。**注:毫无保留的使用了google自带的翻译 **1.确保已安装GnuPGsudo apt-get update[请忽略]balabala......sudo apt-get install --no-install-recommends --yes \gnupg...翻译 2019-08-09 16:47:10 · 2337 阅读 · 0 评论 -
kurento之WebRtcEndpoint到底是个啥
纵观 kurento-tutorial-java ,可以发现应用程序构建了大量的WebRtcEndpoint,那它到底是个啥呢?一言以蔽之,WebRtcEndpoint是webrtc协议的RTCPeerConnection(点对点连接)在KMS 中的代理对象。对于 WebRTC 协议有一定了解的应该知道,在客户端A 和 客户端B 建立对等点连接时,需要用到 RTCPeerConnection ...原创 2019-08-18 12:51:49 · 2135 阅读 · 0 评论 -
kurento API解读
内容来源于官方文档,建议阅读官方文档,我写的不可能比它更好了Kurento API 暴露的这几个对象需要我们去理解,并且我们的使用也是围绕这几个抽象对象来的。Media Elements and Media PipelinesEndpointsFiltersHubs通过暴露的 kurento API 可以达到控制 KMS 的目的。因为目前 kms 是 c++ 的,对于不熟悉 c++ ...翻译 2019-08-15 16:33:59 · 2266 阅读 · 0 评论 -
kurento6.11.0 Java demo搭建
kurento 版本6.11.0,kurento-tutorial-java 分支6.11.0运行时可能会出现的问题:spring boot 版本过旧,官方使用的为1.4,查询资料了解到1.4 支持的java版本为1.7,我本地为1.8,所以我将spring boot 版本修改为1.5了。至于为什么会去注意到版本这个问题,是因为应用程序必须部署为 https 的,而在使用旧版本时,访问ur...原创 2019-08-15 16:35:51 · 1094 阅读 · 5 评论 -
WebRTC之点对点连接
简介一个 RTCPeerConnection 实例运行应用程序与另一个浏览器的RTCPeerConnection(或者另一个实现了该协议的端点)建立点对点连接。通信是通过在信令通道上交换控制消息(称为信令协议)来协调的,信令通道需要服务器提供(协议中并未特殊规定),例如使用XMLHttpRequest 或Web Sockets。 配置信息RTCConfiguration定...原创 2019-06-25 19:23:25 · 2845 阅读 · 0 评论