音视频的历史

  音视频可以说是人类与生俱来的需求,人一出生就要用耳朵听,用眼睛看。中国的古代神话中为此还专门设置了两位神仙(千里眼和顺风耳),他们可以听到或看到千里之外的声音或景像。

  为了解决听的远和看的远的问题,科学家们孜孜不倦一直在为此探索。1876年,贝尔发明了电话,使人们真的可以听到了千里之外的声音,因此掀起了一场技术革命。

  

  对于中国来说,电话的使用也并不晚:

  1882年,我国第一部磁石电话交换机在上海开通

  1904年,北京的第一个官办电话局在东单二条胡同开通,当时是100门人工交换机。

  1960年,我国自行研制的第一套1000门纵横制自动电话交换机在上海吴淞局开通使用。

  

  不过,中国真正走上快车轨的时间是80年代中后期,大量的中国通信设备制造企业如雨后春笋一般涌现。华为、中兴都是从这一时间开始起步的。

  而从固定话到移动电话,从模似信号到数据信号,从1G发展到现在的3G、4G,音频技术的的发展和利用改变了人们的生活。

  

  移动互联网

  2007年第一部iphone手机的出现,以及 2008 年中国 3G 的正式开通,宣告了中国移动互联网的到来。从此科技发展之迅猛完全超出了人们的想像,大家应当都能感同身受。

  现在为了抢占技术先机,各个国家已经开始大力发展 5G,在未来的一两年内,5G将会被快速应用于人们的日常生活。5G的出现会更加激发人们对音视频的需求。

  

  从第一部电话的出现到现在已经有 100多年的历史了,声音的问题解决了,人们开始憧憬着千里眼的实现。但视频远比音频要复杂的多,首先要解决图像压缩技术,从单个图片的压缩PNG, JPEG到连续帧的压缩 MPEG2,H264 /VP8压缩率越来越高,直到现在的 H265/VP9,甚至很快就要推出的AV1, 技术的演进速度也越来越快。

  即使这样,光靠压缩技术想实现千里眼还是困难重重,所以人们想到要提升网络带宽。光纤的发明从技术上解决了网络带宽的提升问题。 3G、4G、5G的发展使得移动端也可以从之前的乡间小路变成了高速公路。

  随着压缩技术的解决以及带宽的快速提升,千里眼已经不在是神话了。1996年 WebEx的创建以及其推出的音视频会议产品是一个非常大的标志。从此,千里眼和顺风耳合为一体。像我们现在的各种娱乐直播以及在线教育的实时互动直播都是在此之后才如雨后春笋般的出现。

  回看历史,音频技术的突破及应用,开启了移动互联网的浪潮。而视频技术的突破相信在不久的将来,也必然要开启另一个技术浪潮。

  压缩技术解决了,高速公路建成了,还缺什么呢?

  WebRTC

  压缩技术解决了,高速公路建成了,也可以进行远程音视频了,但过去开发这样一种产品价格却十分昂贵。而Google帮我们解决了这个问题,2011 年Google花了 6000万美金收购 GIPS 公司(GIPS公司也是一家从事音视频实时互动引擎开发的公司,其在音频编解码,网络传输方面多年的技术积累和非常大技术的优势),并将其技术重新组织,开源成为现在的 WebRTC。

  

  WebRTC的愿景是可以让浏览器间快速、方便的实现端到端的实时音视频互动。随着这几年WebRTC技术的演进,以及WebRTC 1.0规范的推出,在浏览器间进行实时音视频互动已成为可能。

  即便如此,要想在浏览器中开发了这样一款产品也并非易事儿。因为 WebRTC 涉及到媒体能力协商、网络传输,各种协议等一系列专业知识, 这增加了人们学习和撑握 WebRTC的成本。所以市场上急需一门详细讲解WebRTC原理及应用的课程。

  另一方面,WebRTC不仅可以用在浏览器之间进行音视频互动,它还可以应用在非常的广泛的产品上,如P2P传输,文本聊天,文件传输、游戏、多人实时互动、音频处理(回音消除、降噪)等等各种各样的应用中,甚至人工智能软件上。

  随着 5G的推出,将会产生更多现象级的应用。在这些应用中,只要是处理音视频和网络的都可以使用 WebRTC。

  目前,各大互联网公司都在做WebRTC的相关研究,想将其应用于自己的产品中。所以,市场对这方面的开发人员需求具增,在招聘职位中也都会写到有 “WebRTC 经验者优先”。

大话WebRTC的前世今生的更多相关文章

  1. 转:webRTC的前世今生

    https://blog.coding.net/blog/getting-started-with-webrtc

  2. webRTC前世今生

    WebRTC 的前世今生 本文由 rwebrtc 翻译 WebRTC 技术是激烈的开放的 Web 战争中一大突破.-Brendan Eich, inventor of JavaScript 无插件实时 ...

  3. 基于 WebRTC 技术的实时通信服务开发实践

    随着直播的发展,直播实时互动性变得日益重要.又拍云在 WebRTC 的基础上,凭借多年的开发经验,结合当下实际情况,开发 UPRTC 系统,解决了网络延时.并发量大.客户端解码能力差等问题. WebR ...

  4. 听闰土大话前端之ES6是怎么来的

    前言 相信做前端的朋友没有不知道ECMAScript6的,都知晓ES6新增了不少新的特性,但是你知道ES6是怎么来的吗?今天就让闰土来带大家大话ES6的前世今生.当然了,这篇文章会以扫盲为主,科普为辅 ...

  5. 1.1、webrtc的历史和现状

    1.1.webrtc的历史和现状 本书目录 温馨提示:本书的内容,将按照顺序一一展开,上篇文章阐述本书的诞生的原因,推荐阅读方式等. 如果你还没有阅读上一篇文章(必读前言—— 作者的独白),我建议返回 ...

  6. 腾讯技术分享:微信小程序音视频与WebRTC互通的技术思路和实践

    1.概述 本文来自腾讯视频云终端技术总监rexchang(常青)技术分享,内容分别介绍了微信小程序视音视频和WebRTC的技术特征.差异等,并针对两者的技术差异分享和总结了微信小程序视音视频和WebR ...

  7. 了不起的WebRTC:生态日趋完善,或将实时音视频技术白菜化

    本文原文由声网WebRTC技术专家毛玉杰分享. 1.前言 有人说 2017 年是 WebRTC 的转折之年,2018 年将是 WebRTC 的爆发之年,这并非没有根据.就在去年(2017年),WebR ...

  8. 实时视频直播客户端技术盘点:Native、HTML5、WebRTC、微信小程序

    1.前言 2017 年 12 月,微信小程序向开发者开放了实时音视频能力,给业内带来广阔的想象空间.连麦互动视频直播技术在 2016 年直播风口中成为视频直播的标配,然而只有在原生的 APP 上才能保 ...

  9. 【调侃】IOC前世今生

    前些天,参与了公司内部小组的一次技术交流,主要是针对<IOC与AOP>,本着学而时习之的态度及积极分享的精神,我就结合一个小故事来初浅地剖析一下我眼中的“IOC前世今生”,以方便初学者能更 ...

随机推荐

  1. Hbuilder安装

    ---恢复内容开始--- ---恢复内容结束---

  2. django自定义错误响应

    在做一个web时,总是会出现各种错误,如400.403.404.500等.一般开发都要做对应的处理,给一些友好提示,或返回一些公益广告等. 在Django中,默认提供了常见的错误处理方式,比如: ha ...

  3. Django中程序中图片资源的路径问题(static文件夹的放置)

    步骤1:在settings.py文件的最后加上以下内容: STATIC_URL = '/static/'STATIC_ROOT = os.path.join(os.path.dirname(__fil ...

  4. sqlalchemy 小试

    # -*- coding: utf-8 -*- from sqlalchemy import Column, String, create_engine,ForeignKey,Text,INTEGER ...

  5. 如何用git将项目代码上传到github

    注册账户以及创建仓库 要想使用github第一步当然是注册github账号了.之后就可以创建仓库了(免费用户只能建公共仓库),Create a New Repository,填好名称后Create,之 ...

  6. Static变量与代码块

    * static:是一个关键字,用于修饰成员变量和成员方法 * static的特点: * 被所有的对象所共享 * 可以使用类名调用 * 静态的加载优先于对象 * 随着类的加载而加载 * static的 ...

  7. 解决Access查询不区分大小写问题

    1.问题 比如查询用户名密码,会将所有没区分大小写的结果拿出来 2.解决 使用StrComp函数 QString execStr = QString("select * from [tabl ...

  8. Docker中的Cgroup Driver:Cgroupfs 与 Systemd

    在安装kubernetes的过程中,会出现 failed to create kubelet: misconfiguration: kubelet cgroup driver: "cgrou ...

  9. SpringBoot 通过token进行身份验证,存储redis

    代码: public interface TokenManager { /** * 创建token * @param userInfo * @return */ String getToken(Use ...

  10. 【做题】CF177G2. Fibonacci Strings——思维+数列

    题意:定义斐波那契字符串为: $f_1 = $ "a" \(f_2 =\) "b" \(f_n = f_{n-1} + f_{n-2}, \, n > 2 ...