一.信令系统 信令系统主要用来进行信令的交换 在通信双方彼此连接.传输媒体数据之前,它们要通过信令服务器交换一些信息,如规范协商 若 A 与 B 要进行音视频通信,那么 A 要知道 B 已经上线了,同样,B 也要知道 A 在等着与它通信呢 只有双方都知道彼此存在,才能由一方向另一方发起音视频通信请求,并最终实现音视频通话 客户端代码如下: 第一步:首先弹出一个输入框,要求用户写入要加入的房间 第二步:通过 io.connect() 建立与服务端的连接 第三步:再根据 socket 返回的消息做不…
1. 什么是WebRTC 1.1 WebRTC简介 WebRTC,名称源自网页即时通信(英语:Web Real-Time Communication)的缩写,是一个支持网页浏览器进行实时语音对话或视频对话的实时通信框架,提供了一系列页面可调用API. 参考定义:谷歌开放实时通信框架 在上一篇博客Vue +WebSocket + WaveSurferJS 实现H5聊天对话交互 中,已经涉及到WebRTC接口的使用,使用到了getUserMedia方法,用于通过浏览器获取设备麦克风,从而采集音频.…
一.搭建 Web 服务器 前面我们已经实现过,但是没有详细说HTTPS服务 首先需要引入了 express 库,它的功能非常强大,用它来实现 Web 服务器非常方便 同时还需要引入 HTTPS 服务,并让 Web 服务运行于 HTTPS 之上即可 var https = require('https'); var express = require('express'); var serveIndex = require('serve-index'); // 使用 express 实现 WEB…
一.录制分类 在音视频会议.在线教育等系统中,录制是一个特别重要的功能 录制一般分为服务端录制和客户端录制 服务端录制:优点是不用担心客户因自身电脑问题造成录制失败(如磁盘空间不足),也不会因录制时抢占资源(CPU 占用率过高)而导致其他应用出现问题等:缺点是实现的复杂度很高. 客户端录制:优点是方便录制方(如老师)操控,并且所录制的视频清晰度高,实现相对简单.但是它对内存.硬盘的要求 比较高 它们各有优劣,因此大系统一般会同时支持客户端录制与服务端录制. 二.录制思考 第一:录制后音视频流的存…
一.UDP/TCP 如果让你自己开发一套实时互动直播系统,在选择网络传输协议时,你会选择使用UDP协议还是TCP协议 假如使用 TCP 会怎样呢?在极端网络情况下,TCP 为了传输的可靠性,将会进行反复重发信息的操作 在 TCP 协议中,为了避免重传次数过多,定时器的超时时间会按 2 的指数增长,也就是说,假设第一次设置的超时时间是 1 秒,那么第二次就是 2 秒,第三次是 4 秒--第七次是 64 秒.如果第七次之后仍然超时,则断开 TCP 连接,而对于这么长时间的延迟,实时互动的直播系统是根…
一.WebRTC的由来 对于前端开发小伙伴而言,如果用 JavaScript 做音视频处理 在以前是不可想象的,因为首先就要考虑浏览器的性能是否跟得上音视频的采集 但是 Google 作为国际顶尖科技公司,就喜欢做一些常人无法想象的事情 2011 年,Google 创立了 WebRTC 项目,其愿景就是可以在浏览器之间快速地实现音视频通信. 随着时间的发展,在浏览器之间进行实时音视频通信已经已经变很成熟了 二.1对1音视频通话结构 从上图结构图可以看出,1对1的视频通话结构大体上可以分为四个部分…
一.数据统计 在视频直播中,还有一项比较重要,那就是数据监控 比如开发人员需要知道收了多少包.发了多少包.丢了多少包,以及每路流的流量是多少,才能评估出目前用户使用的音视频产品的服务质量是好还是坏 如果用户的音视频服务质量比较差时,尤其是网络带宽不足时,可以通过降低视频分辨率.减少视频帧率.关闭视频等策略来调整用户的网络状况 WebRTC 中的统计信息大体分为三种:inbound-rtp.outbound-rtp.data-channel 另外如果你需要查看 WebRTC 的统计数据,可以在 C…
一.RTCDataChannel WebRTC 不但可以让你进行音视频通话,而且还可以用它传输普通的二进制数据,比如说可以利用它实现文本聊天.文件的传输等 WebRTC 的数据通道(RTCDataChannel)是专门用来传输除了音视频数据之外的任何数据,模仿了 WebSocket 的实现 RTCDataChannel 支持的数据类型也非常多,包括:字符串.Blob.ArrayBuffer 以及 ArrayBufferView WebRTC 的 RTCDataChannel 使用的传输协议为 S…
一.拍照原理 好多人小时候应该都学过,在几张空白的纸上画同一个物体,并让物体之间稍有一些变化,然后连续快速地翻动这几张纸,它就形成了一个小动画,音视频播放器就是利用这样的原理来播放音视频文件的 播放器播的是非编码帧(解码后的帧),这些非编码帧就是一幅幅独立的图像 浏览器提供了一个非常强大的对象,称为Canvas,你可以把它想像成一块画布,你可以在上面画点.面.图形 拍照原理其实就是获取摄像头里面的非编码帧数据,并在Canvas上画出来 <!DOCTYPE html> <html lang…
一.什么是SDP SDP(Session Description Protocal)其实就是当数据过来时候,告诉数据自己这里支持的解码方式.传输协议等等,这样数据才能根据正确的方式进行解码使用 SDP一般包括:媒体类型.媒体格式.传输协议.传输的 IP 和端口 SDP的格式大概如下: v=0 :表示 SDP 的版本号 o=<username><session id><version><network type><address type><…