一.WebRTC的由来 对于前端开发小伙伴而言,如果用 JavaScript 做音视频处理 在以前是不可想象的,因为首先就要考虑浏览器的性能是否跟得上音视频的采集 但是 Google 作为国际顶尖科技公司,就喜欢做一些常人无法想象的事情 2011 年,Google 创立了 WebRTC 项目,其愿景就是可以在浏览器之间快速地实现音视频通信. 随着时间的发展,在浏览器之间进行实时音视频通信已经已经变很成熟了 二.1对1音视频通话结构 从上图结构图可以看出,1对1的视频通话结构大体上可以分为四个部分…
一.录制分类 在音视频会议.在线教育等系统中,录制是一个特别重要的功能 录制一般分为服务端录制和客户端录制 服务端录制:优点是不用担心客户因自身电脑问题造成录制失败(如磁盘空间不足),也不会因录制时抢占资源(CPU 占用率过高)而导致其他应用出现问题等:缺点是实现的复杂度很高. 客户端录制:优点是方便录制方(如老师)操控,并且所录制的视频清晰度高,实现相对简单.但是它对内存.硬盘的要求 比较高 它们各有优劣,因此大系统一般会同时支持客户端录制与服务端录制. 二.录制思考 第一:录制后音视频流的存…
一.共享桌面原理 共享桌面在直播系统中是一个必备功能 共享者:每秒钟抓取多次屏幕,每次抓取的屏幕都与上一次抓取的屏幕做比较,取它们的差值,然后对差值进行压缩:如果是第一次抓屏或切幕的情况,即本次抓取的屏幕与上一次抓取屏幕的变化率超过 80% 时,就做全屏的帧内压缩.最后再将压缩后的数据通过传输模块传送到观看端:数据到达观看端后,再进行解码,这样即可还原出整幅图片并显示出来 远程控制端:当用户通过鼠标点击共享桌面的某个位置时,会首先计算出鼠标实际点击的位置,然后将其作为参数,通过信令发送给共享端.…
一.拍照原理 好多人小时候应该都学过,在几张空白的纸上画同一个物体,并让物体之间稍有一些变化,然后连续快速地翻动这几张纸,它就形成了一个小动画,音视频播放器就是利用这样的原理来播放音视频文件的 播放器播的是非编码帧(解码后的帧),这些非编码帧就是一幅幅独立的图像 浏览器提供了一个非常强大的对象,称为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><…
一.RTCDataChannel WebRTC 不但可以让你进行音视频通话,而且还可以用它传输普通的二进制数据,比如说可以利用它实现文本聊天.文件的传输等 WebRTC 的数据通道(RTCDataChannel)是专门用来传输除了音视频数据之外的任何数据,模仿了 WebSocket 的实现 RTCDataChannel 支持的数据类型也非常多,包括:字符串.Blob.ArrayBuffer 以及 ArrayBufferView WebRTC 的 RTCDataChannel 使用的传输协议为 S…
1. 什么是WebRTC 1.1 WebRTC简介 WebRTC,名称源自网页即时通信(英语:Web Real-Time Communication)的缩写,是一个支持网页浏览器进行实时语音对话或视频对话的实时通信框架,提供了一系列页面可调用API. 参考定义:谷歌开放实时通信框架 在上一篇博客Vue +WebSocket + WaveSurferJS 实现H5聊天对话交互 中,已经涉及到WebRTC接口的使用,使用到了getUserMedia方法,用于通过浏览器获取设备麦克风,从而采集音频.…
本文主要介绍WEBRTC开发过程中的一些现象,文章来自博客园RTC.Blacker,支持原创,欢迎关注微信公众号blacker,更多详见www.rtc.help 随着移动互联网和智能硬件的快速发展,音视频变得越来越重要,加上WEBRTC的出现,让开发这些高大上的功能变得越来越容易, 实际上是这样吗?让我们先来看看WEBRTC应用中的一些现象吧! 一.项目开始前都是这样的: 1.代码都开源了,找个开发人员2个月内将他集成进来,到时候就是中国特色的完全自主研发. 2.Google在搞的东西,不说效果…
开发工具及环境: 1)flash builder4 2)flash cs4 3)flash media server3.5 fms部分 fms是adobe的流媒体服务器,不过是收费的,价格大概是oracle的一半,不过还是觉得挺贵的.adobe提供控制连接数的开发人员版,除了这点具体和完全版一样.服务器的配置网上很多,大家一搜就一大把. 其中关键的是: 由于需求是不仅要提供直播,而且还能点播历史音视频.而as的NetStream的publish方法提供的录制功能是将录制的视频放在直播的同一个文件…
今日,北极星通自主研发的流媒体服务系统Aoku Media Server6.0发布了,将正式支持HTML5直播,这使得网页中无需有flash播放插件或者其他插件,可直接观看直播,HTML5直播也会使得CPU占用降低,同时也能确保直播延时在1s左右. Aoku Media Server6.0也保留着对Flash直播的支持,通过flash插件仍然可以观看1935端口提供的直播.同时Aoku Media Server6.0对于移动上直播应用,由于兼容性问题,仍然采用hls技术,使得无论IOS或者And…
前言 随着计算机技术和 Internet 的日新月异,视频点播技术因其良好的人机交互性和流媒体传输技术倍受教育.娱乐等行业青睐,而在当前, 云计算平台厂商的产品线不断成熟完善, 如果想要搭建视频点播类应用,告别刀耕火种, 直接上云会扫清硬件采购. 技术等各种障碍,以阿里云为例: 这是一个非常典型的解决方案, 对象存储 OSS 可以支持海量视频存储,采集上传的视频被转码以适配各种终端,CDN 加速终端设备播放视频的速度.此外还有一些内容安全审查需求, 比如鉴黄.鉴恐等. 而在视频点播解决方案中,视…
本文主要介绍WebRTC中丢包重传NACK的实现,作者:weizhenwei ,文章最早发表在编风网,微信ID:befoio 支持原创,转载必须注明出处,欢迎关注我的微信公众号blacker(微信ID:blackerteam 或 webrtcorgcn). 在WebRTC中,前向纠错(FEC)和丢包重传(NACK)是抵抗网络错误的重要手段.FEC在发送端将数据包添加冗余纠错码,纠错码连同数据包一起发送到接收端:接收端根据纠错码对数据进行检查和纠正.RFC5109[1]定义FEC数据包的格式.NA…
本文主要介绍WebRTC视频通信中的错误恢复机制(我们翻译和整理的,译者:jiangpeng),最早发表在[这里] 支持原创,转载必须注明出处,欢迎关注我的微信公众号blacker(微信ID:blackerteam). 道路交通与网络交通有很相似之处.就像道路上的车辆一样,网络分包也可能转错了弯,或者因为堵塞导致延迟.但是,网络分包经常会发生丢失,而道路上的车辆很少会出现这张状况.在这篇文章中,我们将讨论媒体流是如何被压缩.通过网络进行传输以及各种错误恢复机制. 1.视频传输.编码与解码 在开始…
一.概念与摘要 视频直播源码的RTMP协议从属于应用层,被设计用来在适合的传输协议(如TCP)上复用和打包多媒体传输流(如音频.视频和互动内容).RTMP提供了一套全双工的可靠的多路复用消息服务,类似于TCP协议[RFC0793],用来在一对结点之间并行传输带时间戳的音频流,视频流,数据流.通常情况下,不同类型的消息会被分配不同的优先级,当网络传输能力受限时,优先级用来控制消息在网络底层的排队顺序. 二.RTMP块流 视频直播源码的实时消息传递协议块流(RTMP块流).它作为一款高级多媒体流协议…
作者:blaker,最早发表在我们的微信公众和[编风网],详见[这里] 支持原创,转载必须注明出处,欢迎关注我的微信公众号blacker(微信ID:blackerteam 或 webrtcorgcn). 靠不靠谱这个问题一直被问到,其实很难一两句话说清楚,因为答案不是一个靠谱或不靠谱可以回答好的,既然被反复问到,今天就系统地整理参考答案. 从大的方向看WebRTC是非常靠谱的,原因如下: 1.使跨平台.跨浏览器通讯成为可能,而且大大加速了这个进程,这就是GoogleWebRTC大受欢迎的主要原因…
本文最早发表在我们的微信公众号上(微信ID:blackerteam),支持原创,详见这里, 2016年6月9日是WebRTC开源5周年的日子,Google WebRTC负责人Harald在社区里面写了一篇文章总结这几年的进展,并附上了自己5年前同样场景下写的一篇文章.为了便于大家更好理解过去5年在WebRTC上都发生了什么,我将这两篇给翻译过来了. 友情提醒:整个翻译并不是逐字逐句进行的,而是在理解了作者的意思后用自己的语言表达出来的,因为如果逐字逐句可能很多意思我们都无法正确理解.这就是为什么…
本文主要总结目前都有哪些使用场景用到webrtc,文章最早发表在我们的微信公众号上,详见这里, 欢迎关注微信公众号blackerteam,更多详见www.blackerteam.com webrtc只是一个工具,帮我们实现实时通讯和音视频的相关功能,所以最终用户根本不用关心webrtc, 也许有一天实现这些功能的更好工具出现了,很多开发人员会放弃webrtc,从这个角度看webrtc能走多远我不知道. 对国内外webrtc现状感兴趣的朋友可以回头看看我之前写的两篇文章: 大数据揭秘国内webrt…
本文主要介绍webrtc应用状况,文章最早发表在我们的微信公众号上,详见这里,欢迎关注微信公众号blackerteam,更多详见www.blackerteam.com WebRTC是个好东东,就好比是一个免费的蛋糕,下面让我们来看看大家都在怎么吃? ps:文中部分的信息由内部小伙伴提供,非来自官方渠道,官方渠道的信息都太官方,原因你懂的! 国外的情况我们在前面也介绍过,google刚推出WebRTC的时候巨头们要么冷眼旁观,要么抵触情绪很大,但几年下来看到发展势头这么猛,态度也都有所转变了,比如…
http://jingyan.baidu.com/article/656db918e37914e381249c9f.html?qq-pf-to=pcqq.c2c 自从装上Win10系统后,跟随前些IE也到了11,但每次打开自己喜欢的网站,发现有中英双语的网站,IE都自动选择英文为,非常不爽.每次都要手工去更改.经过他人在Win8的经验,经过摸索,我们把WIN10中修改默认语言为中文. 工具/原料   WIN 10 IE 11 浏览器 方法/步骤     每次打开IE,访问一些含有中英双语的网,都…
概述  之前介绍了YUV码流的采样格式,下面分析下YUV码流的存储格式,YUV码流的存储格式与采样格式息息相关.总的来讲,YUV存储格式主要分为两种: planar 平面格式 指先连续存储所有像素点的 Y 分量,然后存储 U 分量,最后是 V 分量. packed 打包模式 指每个像素点的 Y.U.V 分量是连续交替存储的. 根据采样方式和存储格式的不同,就有了多种 YUV 格式.这些格式主要是基于 YUV 4:2:2 和 YUV 4:2:0 采样. 常见的基于 YUV 4:2:2 采样的格式如…
本文主要介绍WebRTC选择H.264的理由(我们翻译和整理的,译者:weizhenwei,校验:blacker),最早发表在[编风网] 支持原创,转载必须注明出处,欢迎关注我的微信公众号blacker(微信ID:blackerteam 或 webrtcorgcn). 微软近日宣布: Edge的ORTC开始支持H.264/AVC. 这是目前唯一能够在Firefox.Chrome和Edge之间跨浏览器进行视频通话的方法.VP8和VP9至多能让你在Chrome和Firefox之间建立视频通话. 对我…
本文主要整理一些webrtc相关资料供学习(会持续更新),转载请说明出处,文章来自博客园RTC.Blacker,欢迎关注微信公众号:blackerteam ------------------------------------------------------------- 1,http://www.webrtc.org,需FQ,webrtc官网,神马编译下载,这里的解决方案才是最权威的. 2,基于webrtc封装的一些开源库: 2.1,https://www.easyrtc.com 2.2…
本文主要是自己之前研究WebRTC代码结构时的一些资料(包括Android,iOS,PC),文章来自博客园RTC.Blacker,转载请说明出处. 1.WEBRTC模块:音频数据采集.发送.接收.播放调用过程: 2.WEBRTC模块:视频数据采集.发送.接收.播放调用过程: 3.libjingle模块:发送.接收数据包调用过程: 3.1.底层包发送(通过注册transport来实现包的发送,逻辑基本上跟之前的一样) 3.2.视频包发送: 3.3.音频包发送: 3.4.收到视频包: 3.5.收到音…
本文主要介绍11月要在北京举办的webrtc开发者全球大会,文章来自博客园RTC.Blacker,支持原创,转载必须说明出处,更多详见www.rtc.help 其实两个月前就有圈内朋友跟我介绍这个大会的情况,只不过那个时候还没有确定具体时间. 其实想想也对,现在国内WebRTC的人已经很多了(预计活跃用户在3k人左右),加上开发环境和开发条件困难, 所以每个人都是磕磕碰碰,举步维艰,所以是时候有一个官方大会进来为国内众多开发者传道,授业,解惑了. 其实早在2011年的时候google也在北京举办…
  音视频 版权声明:本文为博主原创文章,未经博主允许不得转载. 前言 随着音视频领域的火热,在很多领域(教育,游戏,娱乐,体育,跑步,餐饮,音乐等)尝试做音视频直播/点播功能,那么作为开发一个小白,如何快速学习音视频基础知识,了解音视频编解码的传输协议,编解码方式,以及如何技术选型,如何解决遇到的坑,本文抛砖引玉,欢迎大咖交流. 一. 音视频的基础知识 1.1 基本概念 视频是什么   静止的画面叫图像(picture).连续的图像变化每秒超过24帧(frame)画面以上时,根椐视觉暂留原理,…