上一篇写的是 WebRTC 源码的下载和编译,为什么不先剖析 WebRTC 的架构设计而是先讲编译过程呢?原因是通过观察 WebRTC 的编译过程,能看到 WebRTC 里有什么。很多人觉得编译过程耗时长,就去干点其它的事坐等编译过程结束。我喜欢观察编译过程的打印信息,通过观察,可以看到 WebRTC 里面有什么,形成对 WebRTC 源码库有基本的认识。接触一个东西时,最初都是从局部到整体。知道 WebRTC 里面存在一些东西,但这些东西是如何组织在一起形成一个完整的解决方案的呢?那就要分析 WebRTC 的架构和设计了。
WebRTC 开发(二)源码下载与编译
在使用任何工具之前,我们都有必要对工具做大概地的了解,做到粗犷但不失偏颇,这对我们选择工具和切入点是很关键的。本节的标题虽然是 WebRTC 源码下载与编译,但在这之前,我们有必要大概地了解 WebRTC,比如开发机构、免费性、支持的平台、功能亮点。
WebRTC 是一个免费开源的跨平台项目,由 Google,Mozilla,Opera 等支持,支持 Chrome,Firefox,Opera 以及 Android 和 iOS 平台,能够给浏览器、手机应用和物联网设备提供了实时互动能力。
WebRTC 是一组协议和 API。WebRTC 的起源可追溯到 2011年,经过六年多的时间的发展,在 2017年底 WebRTC 1.0 标准正式出炉。通过 WebRTC 的 Release Notes 可以看到现在最新的 release 版本是 M74 Release Noted。
2015年移动端直播的兴起,观众可以在手机端实时看主播的直播,但是观众与主播之间的沟通需要通过发弹幕来进行,这种交流的实时性较差,沟通不便利,观众参与感较差。2016年初移动端上出现了主播与观众之间可以通过实时视频聊天这种方式来沟通,即,视频连麦。那我们想实现这种视频连麦的功能该怎么做呢?
现在通过 WebRTC 以及其它一些音视频工具,我们就可以搭建一个视频聊天工具,做到视频连麦,也能做到类似于微信视频群聊。关于各种实现视频连麦的方式,这里就不细说了,放到后面的章节来解说。
了解到 WebRTC 是个什么东西后,通常人的心里就会产生一种跃跃欲试的冲动,想试试,那试试就试试呗。“磨刀不误砍柴工”这句话是有道理的,当我们没有经验和没有人传授经验的时候,那我们就要琢磨这句“磨刀不误砍柴工”了。我们要砍柴做饭,找到一把刀拿起就跑到树林里去砍柴,结果发现刀太钝,砍柴真费劲。这个时候,我们就意识到砍柴刀要用磨刀石磨一磨,磨锋利了,就能提升砍柴的效率。我举这个例子,就想说明两点:
WebRTC 开发(一)引言
三年前在 《聊一聊互动直播》中一文中谈了些对 WebRTC 和 RTC 的看法。现在 WebRTC 的热度不断攀升,我对 WebRTC 的热情也是一度高涨的,对实时音视频以及大数据、机器学习、深度学习这些方向的发展一直保持着关注。在 QN 工作了三年,这三年的远程办公经历,总结下来就是太忙了,工作和私人时间搅合在一起,感觉一天二十四小时都在工作,有些疲惫不堪,但收获也是有的。而今,经过一段时间的休息调整,状态恢复的不错,有时间思考,有时间写写自己的看法,还有点时间感受生活。
摧毁一个人,最直接最暴力的方式就是让他没有时间思考。没有时间思考的人,也是一个不懂得交流的人。如果一个人没有时间思考,也就没有自己的想法,更谈不上与人交流产生火花。时间是个很神奇的东西,能成就人,也能让人“几十年如一日”没有长进。特别是做程序员这行,思考力与实践力至关重要。对于生活与工作,作为人,我们更需要思考,会工作会生活。
BF 算法与 KMP 算法
最近温习数据结构与算法,在学习字符串的匹配算法 BM 算法、KMP 算法时,看到了两篇关于 KMP 算法讲解的文章,写的很经典。
阮一峰写的 字符串匹配的KMP算法
BF 算法、KMP 算法匹配过程如下:
主串 S:“BBC ABCDAB ABCDABCDABDE”
模式串 P:”ABCDABD”
BM 算法很简单,就是暴力匹配,以主串 S 为基准,模式串 P 从主串 S 的串头单步向后移动匹配到主串 S 的串尾。
音视频开发技能列表
使用 SRS 在 VPS 上搭建流媒体服务器
闲话少说,直接步入正题。
一、登陆远程服务器
我使用的是 MacBook Pro 笔记本,在 MacBook Pro 笔记本上的终端输入命令 ssh root@IP地址 -p ssh端口
1 | ssh root@111.11.111.111 -p 1111 |
其中,IP 地址和 SSH 端口换成你自己的 VPS 信息。
二、下载 SRS 源码
在终端执行命令下载 SRS 源码
1 | git clone https://github.com/ossrs/srs |
三、编译 SRS
进入 srs/trunk 目录
1 | cd ./srs/trunk |
在终端执行下面的命令编译 SRS
1 | ./configure && make |
使用 live555 在 VPS 上搭建流媒体服务器
在上一篇文章 使用搬瓦工搭建 ShadowSocks 翻墙(VPN) 中提到了我购买了 VPS 服务资源,所谓物尽其用,仅让其充当 VPN 服务的工具有点浪费,可以在上面跑一些其它服务,比如流媒体直播服务、流媒体转码服务等。关于主机购买,也可以购买国内供应商的提供的主机服务,像阿里云、腾讯云、百度云等,可以关注他们的一些促销活动,在优惠力度大的时候囤机。
我的 VPS 服务器的操作系统为:
1 | Operating system: Centos 7 x86_64 bbr |
使用搬瓦工搭建 ShadowSocks 翻墙(VPN)
《搬瓦工搭建 ShadowSocks 翻墙(VPN)系列》
(1) 搬瓦工搭建 ShadowSocks 翻墙(VPN)
(2) 搬瓦工搭建 ShadowSocks 翻墙(VPN)- 解决 IP 被墙
(3) 搬瓦工搭建 ShadowSocks 翻墙(VPN)- 解决 port 被封
(4) 搬瓦工搭建 ShadowSocks 翻墙(VPN)- 更换密码
为了查询资料的便利性,大部分时候需要使用 Google 浏览器,但是国内除了高校能默认支持访问 Google 的服务外,基本所有人想使用 Google 的服务都需要借助 虚拟专用网 VPN (Virtual Private Network) 工具。以前使用过一些 VPN 服务提供商提供的服务,出现过用了一段时间就使用不了了、服务不稳定、连接后访问网络资源慢,还有的干脆就无法使用。比如我花了 79 美金买过 NordVPN 的服务,网上的口碑和排名很靠前的。事实上真是花钱买烦恼,99%的概率连不上 NordVPN 服务,即使碰运气连上去了,但网速差的让人吐血。为这个事,与 NordVPN 的技术支持来往过好多封英文邮件,最终还是没有解决连不上服务器的问题。在国内想使用 Google 服务查询资料真是痛苦。搞笑的是,2018年12月初去韩国济州岛玩,在济州岛使用 NordVPN 服务倒是 99%以上概率连上服务器,网速也还可以。泪崩,在 NordVPN 上花的钱彻底打水漂了。好在工作所在公司提供了 VPN 服务,就一直使用到现在。
为能正常使用 Google 的资源以及考虑到数据访问的私密性,就开始考虑搭建一个私人的 VPN 服务。查询了一些资料,找到了 搬瓦工 (BandwagonHost) 。以下是搭建的流程:
Mac 上安装 Spark
1. 安装 JDK
1.1 检查 JDK 版本
检查 Mac 上是否已经安装了 jdk,在终端上执行命令
java -version
Spark 是使用 scala 语言开发的,如果要使用 Scala,就需要安装与之对应的 jdk 版本,Scala 的下载地址:http://www.scala-lang.org/download/。下载地址页面明确说明了要使用 Scala 就必须要求 java version 为 1.8 以上,也就是 Java 8 JDK 以上版本。
【译】调查:苹果 HEVC 采用的影响
英语原文:Survey: The Impact of Apple’s HEVC Adoption
调查:苹果 HEVC 采用的影响
新的 Unisphere 报告显示OTT服务和其他视频发布商正在向HEVC转移,但同样对 AV1 感兴趣
作者:Streaming Media 编辑人员
发布时间:2018年1月23日
您是否想知道苹果决定在 HTTP Live Streaming(HLS)中添加 HEVC 对流发布社区意图部署 HEVC 有多大影响?最近一项对 Streaming Media 读者的调查显示,66.2%的受访者表示,苹果的举动产生了重大影响,到2018年年底,高达62.5%的人可能会向 HLS 中添加 HEVC。这些只是 Harmonic 公司和 Unisphere 研究机构今天联合发布的许多调查结果中的两个。这份名为“苹果 HEVC 采用的影响:基于调查的报告”的报告包括来自600多 Streaming Media 读者的回应。
这份可供下载的8页报告也显示了制片人对开放媒体联盟(AOM)AV1 编解码器的兴趣,66%以上的受访者表现出浓厚的兴趣。虽然目前超过25%的受访者分发使用 HEVC 编码的视频,但74%的受访者表示“已知或未知的内容使用费”是通过 HLS 部署 HEVC 的一个重要问题。