前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >常青:小程序音视频技术实现以及在相关行业的实际应用

常青:小程序音视频技术实现以及在相关行业的实际应用

原创
作者头像
腾讯云开发者社区技术沙龙
修改2018-04-25 18:57:32
1.7K7
修改2018-04-25 18:57:32
举报
文章被收录于专栏:腾讯云技术沙龙

本文首发在腾讯云开发者社区,未经许可,不得转载。

我演讲的内容是小程序音视频背后的一些技术支持。先讲一些术语,解释一些术语的概念,最后再说这些技术怎么去用起来,但是我觉得这比较容易陷入到大家都开始睡着的阶段。所以我今天从一个历史的角度,来看一看我们是怎么把小程序做成视频云的解决方案,跟微信结合起来的。

腾讯视频云终端技术总监常青
腾讯视频云终端技术总监常青

自我介绍

我一直在腾讯做终端,毕业到现在是10年,10年时间一直在里面,虽然说在里面待了10年,但是我感觉我工作的时间接近20年了,因为我们基本上每天是9点到晚上12点,工作时间还是比较久的。这么多的时间里面,想想做的事情很多。现在主要是做音视频。今天要讲的东西,主要是围绕这几个方面:市场前景、原理剖析、技术演化、WebRTC、快速上手

视频云跟小程序的结合点

我引一个故事,这个故事发生在昨天下午。我跟另外一个公司的HR去机场的路上,我们两个打了同一个出租车。那个HR跟我讲一个事情,说我这次来腾讯主要是为了做培训。大家知道腾讯这几年一直在做一件事情,他会投资一些公司,帮助这些公司做大,所以不仅仅是注资的问题,很多情况下我们会用我们的一些资源,优化它的内部管理,包括培训的资源,这个HR就说。你们是怎么做人员管理的?他听完了之后,说获益匪浅。一路上跟我聊课程总结,为什么他这么待劲?他先问我是搞什么的?我说我是搞研发的。我听他说完了之后,我说他们讲给你听的这些东西,都是不太能用得上的。他说怎么回事?我说你听的那些东西都是一个HR体系下面,从上到下怎么做管理,但是腾讯里面究竟怎么回事?创业公司最开始的时候,多少人合适?一个餐桌上能坐下的人。如果假如说公司做得还不错,A轮、B轮,这个时候,公司里的人,一辆大巴车可以坐下就行了。虽然体系非常完善,但是这里面大部分就是一个个的餐桌,和一辆辆的大巴。你说那HR是干吗的?在我们看来HR就是资源,偶尔帮我们搞搞校招的事情。他说那你们说的什么什么规则,什么什么牛逼的理论。我说我都没有了解过,因为我也用不到,我们团队就是一辆大巴车,仅此而已。这是一个过程,我其实想说的东西,我们做什么东西,可能能够做得出成绩来。比如说有些人说你们团队就是赚钱的,当然我老板跟我讲,你这点钱赚不了多少。最关键是怎么样拓展更多的方向。我们一直在寻求更多的机会,所以在去年年初的时候,我们说小程序的机会很不错。一个最大的点是它的安装门槛被干掉了,很大程度上解决了很多低频刚需的尴尬。比如说下飞机去了一个地方,我是打的,或者从地铁出来,我发现打的,距离很近,师傅也不远隔载你。你这个时候就看到小程序的价值所在了。像滴滴刚需,还是有很多的机会的。我朋友圈里有很多的发广告的,上面有一句话长按扫描二维码,然后出现一个小程序,这种广告效应还是不错的。

我最近去海底捞吃饭,我们一家人坐在一个座位上在那儿等,座位上有一个二维码,我扫了一下,恭喜你成为我们什么什么优质客户,可以在哪里把账户开了,我觉得可能打广告的同学是非常有身份优越感的。他觉得让我去他们银行开户,是对我的抬举。我觉得没有什么意义,人家在哪个网点开户,这都已经不知道是什么时候的事了,这个概率几乎为零。像游戏为什么获客成本这么高?就是因为有很多很多广告。

像金融开户场景下面,如果假如说我们都直接扫个二维码,就把这个事解决了,获客成本一下就降下去了。像教育行业,K12里面非常出名的VIBK(音),为了拿到一个客户,你知道花多少钱吗?这是我们的客户不能说,但是我要告诉你,就会吓死你。

董燚把需求提出来,我们将其落地,这里面是很艰难的。因为大家要知道,微信产品的市场定位是对用户的,要求是非常高的。当时我们去瞄这个需求的时候,提了很多要求。第一要开源,第二接口必须要很简单,一两个标签就能搞定;第三个定制性非常强,第四个出了很多问题要很好查。我说要求太高了,我当时非常严肃地跟他们说,你这里面说再多需求,我都接,只要让我们能够搭上这个车,什么事情都可以。我们就开始回去琢磨。

音视频并不是说大家看起来这么复杂,很多东西是可以简化的。我们在音频解决方案里面,再复杂的东西,把它拆分成最简单的小原子,一个是上行,一个是下行,就这两个解决了所有问题。

下行和上行主要做什么?

把音视频的画面和声音送到云上去,不是简单地拍一些照,或者说是录一些音往服务器上传,而是要经过几个基本过程,第一个首先是采集,比如说视频要采集一些图片,声音要采集一段一段音频的模拟信号,再转成数字信号。采集完了之后,还是要做基础处理。微信是一个很严肃的品牌,美颜是可以不加的,直播功能是不是可以就不要了?我说不加美颜的直播是没有人用的,效果好像差异很大。然后美颜功能,就被我这样忽悠上去了。

降噪处理而后就是编码,视频编码器、音频编码器。电信带宽刻意把上行的带宽调到很低。生成网络之后,把它传到服务器上去。

下行是倒过来,网络并不是永远都是平稳的,很多客户跟我讲说,我要投诉你,你们的直播质量不行,居然会卡,我说你是不是认为直播从来不会卡?他说对,直播应该从来不会卡。我说不是这样的,网络不是完美的,你下一个东西的时候,也不是说一直都是全网速的去下载。为什么有些不太容易卡?有些很容易卡?很重要的原因就是有多少缓冲。大家知道网上下东西,比如说下个安装包,或者是用迅雷下个片,速度时快时慢,要注意一件事情,如果你下多少就直接播多少,你播放的速度完全跟着网速来走,网络一卡,你的画面就卡了。所以我们需要在播放器上准备一个应急仓库的概念。让大家知道,平时吃的大米都是去年的,叫战略粮食。新的米都是带超市里面买到的,因为战略的这些东西,一旦出现打仗了,比如说进口粮食出问题了,这些粮食就可以用来立即救灾,或者立即用来补充空缺。如果这些粮食一年到头没有用起来,第二年的时候,自然就要给优先消灭掉了,不然就放坏了。所以在这个地方,大家可以想缓冲就是战略粮食的作用。缓冲比较大了,你看得比较流畅,缓冲比较小了,你看得比较卡。

这里面会有解码,把画面转成数据,现在要解出来。再往后就是放入到界面中,这一部分是关于播放这一块。

既然有了上行和下行,SDK也好,还有这一套体系装在微信里,咱们这个东西基本上就差不多了,但实际上并没有那么简单。其实这个事情还是经过了比较长时间的演化过程,假设说已经有上行和下行,我们带上腾讯云可以做什么?最司空见惯的就是做直播。如果我不拿麦,大家听我说话声音比较小。但是我用上麦克风,后面的同学都听得很清楚,这就是靠的右边这台设备,会把我一个人的声音采集进去之后,再经过周边的这些喇叭,再放大一点。腾讯云很大程度上,通过直接放大,从一路变成两路,两路变成四路,四路变成八路,实际上是一个点一下子扩散到几百个,只要服务器足够多,这个线路就足够长。讲杜蕾斯邪恶的广告,经常有100多万人看,并不是从一台服务器上拉的,可能是从全国上万台的服务器上拽的。从一个点逐一放大。

在这一块,我们用两个标签,一个上行、一个下行,配上这个。至于这个地址的后面线路怎么出来,像做云的都会把这个事情做好。很大程度上投资都在这里。

小程序要做直播,会担心用户涉黄。微信是腾讯内部公关危机最多的,因为什么事,只要是在微信上出现了,都说是微信的问题,实际上是怎么出来的。比如说有人发个文章,将了比较高敏感度的话题,便会牵扯到微信,因为在微信平台上出来的。

直播

直播有一个问题,直播延时很高。多的时候有5秒的、8秒的、10秒的,对于我不太需要时延的场景还可以。但是如果这个场景要求时延很高。上一年比较火的就是远程抓娃娃,观众看这些人怎么抓都抓不住,真笨,其实你自己也抓不住,因为机器是有概率的,有很高的概率掉下来。让我来的时候,这个地方就出现一个问题了,你去动一下这个抓,这个延时必须要非常低。如果要是2秒,你按一下,这个时间时间倒计时了,5块钱没有了,这个时候你就崩溃了。延时要求还是蛮低的,我们想办法构建一个延时比较低的线路。构建延时比较低的线路,就要用到一些附加的技术,比如说我们就不能用传统的线路,因为它是有公平问题的。如果路上很堵,大家都让一让,是不是大家都比较顺畅?这就比较公平。我们非常希望我们流氓一点,如果你这边有点挤,他那边有点挤,我为了保证我这边画面尽可能快,我当然希望暴露一点。我抓娃娃的时候,钱已经交了,我希望尽可能的画面是流畅的。同时这里面也需要一定延时的控制,所以咱们要上两套技术,具体怎么做的,一会给大家讲。有很多的摄象头,头都是会转的,这种场景,也是比较适合用这种解决方案的。

刚才讲杜蕾斯的王奇老师,跟我这边,我们两个人隔了天南海北,假如说他现在在深圳,我在北京,他那边到我这边是低延时的,我在500毫秒以内,就可以看到王奇老师的画面。从我这儿到他也是500毫秒以内,是不是两个人基本上就可以双线沟通了?我能看到他的表情,他也能看到我的表情,我能听到他说的话,他也能听到我说的话,这个想法很完美,只是有一点点骨感,我们还要做很多事情。比如说把回音给消了,我说的话,被他经过放大之后,传入我的麦克风,是不是就会嗡,回音一直在转。我这边说的话,假设是被王奇老师那边听到了,还被他手机上的麦克风听到了,会再给我传过来,这个回音是一定要消掉的。

双向音视频

双向音视频在解决很多客户场景上发挥用处。假设现在延时很高了,我想把它降下来。我在这里说的时候,大家听着声音比较流畅、比较连贯,每个字是没有跳字的情况,但是如果让我说的话,既快一点,但是又不变尖,因为变尖是很奇怪的事情。我今天晚上要赶飞机,如果你要把我的时间调短了,我今天晚上要改飞机,这个声音是非常尖的,听起来不舒服。我们交给计算机做这个事情的时候,能不能把这个速度加快一点,又不变尖?计算机可以帮你把刚才我说的这一段话,切得极细,一秒钟切出500份,或者50份多行。每一份从里面找一找,有没有一些可以忽略的东西。比如说这一块好像没有啥用,它可能只有一个字的发音的50分之一的时间,我们就把这个干掉。我怎么干?找一找最近有没有一个相应匹配的波形,把它平衡下来,这一段时间就省下来了。每一段都这样干一干,声音好像有一点加速,但是你又听不出来。有些时候突发的扩音爆音问题,可以通过一些界面,比如说声音从小逐渐拉大,逐步把扩音爆音问题解决掉。

回音消除是围绕着先分析,再去处理的一个过程。消回音很大程度是先把要播的声音分析一遍,等到再录回来的时候,我看一看录下来的声音,有没有跟之前这一段相似的,我就可以替掉,这就是所谓的回音消除。

双人的音视频基本上可以通过这种方式来解决。双人的搞定了,是不是说多人的也可以搞定了?我现在跟一个同学,A和B之间拉通一个双向的,再加一路也挺简单的。三个人,每个人把自己的画面推到顶上去。每个人同时拉另外两个人的,还是挺简单的。但难的东西主要是在相应的状态,他们三个人的状态是一定要保持一致的。如果两个C这边有个人出去了,但是B这块并不知道这个事情,这一块就会出现他的画面跟其他人不对齐,所以要解决这个问题,我们在服务端做一个场景管理,用一种状态表的形式,把每个人的状态都列出来,有需要的时候就更新,这样状态就同步了。所谓的分布式的方案,还是偏复杂的。我们这个是中心化管理之路。

我们现在会做一些辅助的设备,辅助的图片,帮助大家把房间里面每个人状态的管理,状态同步搞定。这一部分也不是很难,而且代码是开源的,大家有兴趣可以学习和了解一下。

和WebRTC有什么区别?

我们一个很大的点是歧义比较小。我们会看到WebRTC很多东西是相比于目前这一套,还是有一些侧重的。大家知道WebRTC是谷歌在推的一套标准,但是它需要很多家都支持。你不能说我这样干,苹果就会跟着你。我不能说我先要加一个东西,然后其他家就要跟着你走。这里面有很大的情况是依赖于各个实验方,在意见上是一致的。

小程序解决方案,很大程度上,我们的扩展性和定制性会非常强。我们跟微信团队的合作是一个月就可以出一个版本,经常会更新很多新功能上去。像美颜、截图,各种其他的东西都会随着版本迭代快速更新。大家关注有哪些需求,变成现在的刚需或者热点,这些东西都很落地,在WebRTC这一块就比较困难。

另外WebRTC还是不支持内嵌的解决方案。WebRTC还是很强大的,得到了很多浏览器的支持,我们要去跟它对抗,最好的办法就是加入他们,所以说,最新的解决方案里面,我们的新版本里面,我们在6.6.6的微信版本里面,支持了两个平台的互通,这是依赖于我们的服务器,可以做多重转换。

在使用上比较简单,具体后面的内容,我会在我们的官网的文章里面,会给大家一些指引的。

我们有一些配套的开源的组件,有互动课堂,或者多轮会议,或者双人通讯,有一些快速上手的解决方案,用起来会比较简单。填一下房间号,填一下属性,填一下有几个人就可以了。

最后是有一些相应的资料指引。我今天的分享就到这里!

QA

Q:咱们有没有提供一些视频链接之类的?

A:有一套(英文)有电子版的,下周也会加入进去,这些都是开源的。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 自我介绍
    • 视频云跟小程序的结合点
      • 下行和上行主要做什么?
        • 直播
          • 双向音视频
            • 和WebRTC有什么区别?
            相关产品与服务
            云直播
            云直播(Cloud Streaming Services,CSS)为您提供极速、稳定、专业的云端直播处理服务,根据业务的不同直播场景需求,云直播提供了标准直播、快直播、云导播台三种服务,分别针对大规模实时观看、超低延时直播、便捷云端导播的场景,配合腾讯云视立方·直播 SDK,为您提供一站式的音视频直播解决方案。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档