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