小程序音视频能力技术负责人解读“小程序直播”

策划 / LiveVideoStack

责编 / 包研

一夜之间,“小程序+直播”成为多媒体开发者热议的话题。从底层技术实现到接口开放程度,是否绑定腾讯云?价格体系?低延迟性能如何?......一连串的问题背后是开发者乃至整个生态对“小程序+直播”的关注。LiveVideoStack邀请到小程序音视频能力的技术负责人常青,就开发者关注的各种问题进行了解答。如果您还有新的问题,请在在文末留言或邮件至[email protected]。

另外,我们还发起了针对“小程序+直播”的问卷,近9成的开发者看好“小程序+直播”,最看好的应用场景是直播在线教育视频会议,最关心的性能是延迟

LiveVideoStack:关于小程序中的RTC能力,是通过WebRTC实现的(或其他RTC技术),还是基于RTMP呢?

常青:小程序的RTC能力是基于RTMP技术实现的,没有使用WebRTC是出于两方面的考虑:一是微信安装包(尤其是iOS版本)的体积增量必须要控制在可接受的范围内,这是一个硬性的要求。另一个考虑就是RTMP协议的适用场景更多,除了实时视频通话场景之外,还可以做标准直播解决方案。比如培训、教育等场景。

LiveVideoStack:求证下,小程序里面用的是UDP + RTMP方式来实现RTC的,而且还对协议内容加密了?那是不是意味着小程序RTC必须走腾讯云?

常青:首先,对于直播场景下音视频通道的加密是很刚需的一个要求,所以小程序在RTC模式下如果走腾讯云,会默认开启加密能力以避免窃听攻击。

当然,小程序如果实现RTC不需要绑定腾讯云,关于这一点大家可以做个试验:简单用 nginx-rtmp 搭建一个后台服务器,然后创建两对RTMP url,按照文档 https://cloud.tencent.com/document/product/454/12521 的指引放在小程序里测试,可以体验一下效果,只要网络不是特别差,延迟和效果应该是很不错的。

腾讯云真正做的出色的是,让全国不同地方的两路RTMP,都能达到很好的效果,这是腾讯云多年来一直积累CDN节点,优化内部链路调度(GBN网络)的结果。

LiveVideoStack:如果是RTMP + UDP,无法实现ARQ、FEC传输算法,是这样吧?

常青:RTMP本身是可靠的传输层协议,所以不需要实现ARQ和FEC算法,ARQ和FEC都是为了解决传输层协议不可靠(比如私有UDP协议)而不得不采用的办法。

这是一个漫长的故事:早期实时音视频通话面对的网络条件要比现在恶劣的多,也就是常说的窄带时代。在那个时代的网络条件下,由于带宽成本极高,所以实时音视频通话都需要采用 UDP 协议来打洞实现 peer to peer 直连,这就意味着我们只能选择 UDP 协议,因为 TCP 打洞做NAT穿越不是那么容易。而 UDP 协议如果做成可靠的协议(也就是不丢包),就丧失了它的灵活性,因为音视频通话本身对于部分数据的丢失是可以容忍的,所以适当的允许一些丢包是更加符合窄带传输的需求。当然,我们不希望频繁的丢数据,不然通话质量就上不来了,所以 ARQ 和 FEC 这种丢包恢复技术就应用而生了。

时代在进步,技术思路也在进步。目前已经到了宽带时代,高清大码率的场景越发普遍,直播的流行和大王卡的普及,都在告诉我们网络的带宽越来越理想,所以我们现在面对的主要问题可能不再是带宽不够用,而是WiFi 和 4G下突发的网络波动。而应对这种网络波动,可靠传输层协议并不比私有UDP协议劣势太多,而且ARQ和FEC本身会产生带宽的浪费,以FEC为例,30%的丢包需要用30%的冗余来解决,但是30%的冗余就意味着多传输30%的数据,在码率小的时候不起眼,大码率场景下就越发鸡肋了。

所以,用惯了ARQ和FEC的技术专家们,也可以偶尔考虑一下可靠的传输协议,只要不是特别极端的场景,效果还是可以一试的,而且我们也在持续优化和改进,争取在每一个版本中都有效果上的提升。

腾讯云也有专门的私有UDP解决方案,其ARQ和FEC技术也非常成熟,但这都是腾讯云自家的标准,在微信小程序里落地就会面临绑定腾讯云的问题,所以我们最终选择了普遍支持的标准RTMP协议,并将底层的TCP传输层换成了业内目前普遍更被看好的HTTP/2的一种内部传输技术,它也是基于UDP协议实现的,但它并不私有,也越来越流行。如果您感兴趣,Google一下 HTTP/2 会了解到更多。

LiveVideoStack:native的直播、短视频应用已经非常成熟了,功能强大。同时,基于H5的音视频应用,在线教育服务也比较流行。那么小程序具体如何定位自己?他真正的优势在哪里?

常青:小程序的定位就是服务号的能力扩展,它的优势就是能力的扩展上要比H5更快,H5受限于浏览器内核的普及,新特性和新能力的上线需要一个较长的时间,而且苹果在这里的态度也有很大的不确定性。比如最近WebRTC持续升温,很大程度上要得益于苹果的态度转变,而我们并不能假设在后续所有的场景上苹果都会保持这种开放的心态。同时,小程序的定位更加专注于能力实现,在体验和二次加载速度上,相比于H5还是有一定的优势。当然,相比于定制性和迭代速度,体验上的优势仅仅是一个小细节了。

LiveVideoStack:iOS 11可以支持WebRTC,相信iOS上的微信支持WebRTC也可期。许多开发者看好WebRTC可以打通iOS、Android和PC浏览器。相比而言,小程序的优势是什么?

常青:目前iOS上的WebRTC能力还有一些不尽如人意的地方。另外,Android系统下的WebRTC实现也因为系统版本和碎片化问题有很多兼容性问题。在目前这段WebRTC还在不断完善中的时间里,要做到比较统一的体验,前端工程师们依然要面对很多不可控因素。

从长期来看,小程序上的优势在于更好的可控性和可定制性:可控性上来讲,由于审核制度的存在,在小程序里出现涉黄涉政等不法现象的概率会接近于零;另一方面,类似美颜等更“接地气”的特性的支持,都是WebRTC需要很长时间才能反应过来的,我们也非常希望后续能够快速迭代地增加一些高性价比的特性进来(太过娱乐化的特性暂不考虑)。

LiveVideoStack:是否提供原生的连麦(包含回声消除)功能?是否开放接口,对接第三方的连麦服务?

常青:live-pusher 和 live-player 的RTC模式本身自带回音消除功能,只要设置好mode参数为RTC,都是可以使用回声消除能力的。 而且 live-pusher 和 live-player 没有限制第三方云服务,只要有可用的RTMP地址就可以使用,至于如何基于 live-pusher 和 live-player 标签实现实时通话功能,可以参考:https://cloud.tencent.com/document/product/454/12521

LiveVideoStack:文档中表示,小程序音视频能力不需要指定腾讯云,但接口似乎还没有(完全)开放?

常青:小程序此次开放的音视频能力确实不需要指定腾讯云,支持RTMP协议的云商都可以对接,所有接口都已经放在了文档 https://cloud.tencent.com/document/product/454/12518 和https://cloud.tencent.com/document/product/454/12519 中进行说明,没有尚未暴露的接口。

LiveVideoStack:CDN有哪几种接入方式?

常青:如果使用 live-player 标签,可以使用RTMP协议和http-flv协议进行接入,也可以使用HLS协议接入,但HLS协议需要使用微信小程序早就开放的<video>标签。

LiveVideoStack:第三方服务提供商(如美颜、图像识别、连麦、CDN等)是否可以接入小程序,成为用户可选的服务?

常青:这里第三方的相关服务要看是云服务还是终端服务了。如果是云服务,那是完全没有问题的,支持RTMP协议都可以(接入),比如连麦、CDN等都无限制。但如果是终端服务,除非是JavaScript的组件,否则都是不行的,因为微信小程序只提供了JavaScript的编程能力。美颜是我们直接将图像处理算法打包进微信APP实现的,JavaScript无法达到这个计算性能的要求。

LiveVideoStack:小程序接受直播、在线教育、金融、医疗、视频会议、电商、政务民生等几类应用的审核,在您看来,具有音视频能力的小程序最佳的应用场景是什么?

常青:小程序的定位就是服务号的能力扩展,最佳的应用场景就是装APP太麻烦,搜索一下就能用的场景,比如远程车险定损、在线视频客服等等,这些惠民便民的场景也是微信非常鼓励和推荐的。

原文地址:http://blog.51cto.com/13530535/2055755

时间: 2024-10-10 02:42:58

小程序音视频能力技术负责人解读“小程序直播”的相关文章

小程序音视频背后的故事

欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 转载,本文作者,rexchang(常青),腾讯视频云终端技术总监,2008 年毕业加入腾讯,一直从事客户端研发相关工作,先后参与过 PC QQ.手机QQ.QQ物联 等产品项目,目前在腾讯视频云团队负责音视频终端解决方案的优化和落地工作,帮助客户在可控的研发成本投入之下,获得业内一流的音视频解决方案,目前我们的产品线包括:互动直播.点播.短视频.实时视频通话,图像处理,AI 等等. 为方便大家消化,请参考本篇文章的思维导图 本篇文章的脉络

小程序音视频功能的原理及应用

本文由云+社区发表 作者:常青 腾讯视频云是做什么的?腾讯视频云既不做数据库,也不做存储,也不做网络,我们只做音视频服务,也就是直播.点播.视频通话.这类面向B类客户的音视频PAAS业务. 今天主要是跟大家讲的是腾讯视频云在过去一年时间里跟小程序结合,看看怎么去把这样一个高技术含量的一个能力去跟小程序这样一个非常轻量级的平台发挥1+1>2的效应. 今天的话题分四部分,第一个是小程序音视频能拿来做什么,第二部分是将其内部是怎么做到的?第三就是讲腾讯视频云的音视频技术的一些技术细节:第四个是介绍一下

音视频 开发技术,让智能家居更智能!

智能家居是在物联网的影响之下物联化体现.智能家居通过物联网技术将家中的各种设备(如音视频设备.照明系统.窗帘控制.空调控制.安防系统.数字影院系统.网络家电以及三表抄送等)连接到一起,提供家电控制.照明控制.窗帘控制.电话远程控制.室内外遥控.防盗报警.环境监测.暖通控制.红外转发以及可编程定时控制等多种功能和手段. 定义 智能家居是一个居住环境,是以住宅为平台安装有智能家居系统的居住环境,实施智能家居系统的过程就称为智能家居集成.以住宅为平台,利用综合布线技术.网络通信技术. 智能家居-系统设

即时通讯——详解音视频同步技术

转自:http://tieba.baidu.com/p/2138076570 摘要:针对网络传输中由于延迟.抖动.网络传输条件变化等因素引起的音视频不同步的问题,设计并实现了一种适应不同网络条件的音视频同步方案.利用音视频编码技术AMR-WB和H.264具有在复杂网络环境中速率可选择的特性,结合RTP时间戳和RTCP反馈检测QOS,通过控制音视频编码方式,实现了动态网络环境下的音视频同步方案.重点介绍了可靠网络环境和动态网络环境下同步算法的设计过程,并通过实际测试验证了此方案的可行性.结果表明,

音视频开发技术之排查故障信息

在开发,或是使用AnyChat Platform Core SDK的过程中,特别是在对AnyChat SDK不熟悉的情况下,遇到问题通常无从下手,这里我们给出较通用的故障分析.排查和解决方案: 一.服务器部分 服务器程序启动后,会在服务器程序所在目录生成一个日志文件:“AnyChatCoreServer.log”,典型的日志文件内容如下: 1.---------------------------Init Service--------------------------- 2.Current 

音视频 对讲技术实现楼宇智能化

楼宇智能化系统一般包括以下系统:综合布线系统.计算机网络系统.电话系统.有线电视及卫星电视系统.安防监控系统.一卡通系统.广播告示系统.楼宇自控系统.酒店管理系统.物业管理系统.智能楼宇管理系统(集控平台)及数据中心机房建设等. 1.综合布线系统 结构化综合布线系统是整幢大楼的"神经系统",是网络.通讯等系统的基础.大楼结构化布线采用光纤作为主干(电话主干使用大对数线缆).超五类或六类双绞线到房间,提供网络接入. 2.网络系统 在综合布线基础上构建网络系统,提供系统桌面100/1000

音视频开发技术之自主集成第三方编解码器

AnyChat Platform Core SDK支持加载外部音视频的编码.解码模块(简称AnyChat Codec库),增强系统的可扩展性,同时也满足一些特定应用环境的特殊需求,如与特定的硬件平台(android.pad)集成时,可以调用硬件编解码器,实现更高效率的即时通讯应用. AnyChat Platform Core SDK内核已经实现了部分常用的音视频编码.解码模块,如H.264视频编码.解码算法,ARM-WB.AAC.SPEEX.CELT等音频编码.解码算法.上层应用可以自己定义新的

音视频通讯技术 视频二次开发方案

当我们使用像Skype.QQ这样的工具和朋友流畅地进行语音视频聊天时,我们可曾想过其背后有哪些强大的技术在支撑?网络语音通话通常是双向的,就模型层面来说,这个双向是对称的.为了简单起见,我们讨论一个方向的通道就可以了.一方说话,另一方则听到声音.看似简单而迅捷,但是其背后的流程却是相当复杂的. 语音采集 语音采集指的是从麦克风采集音频数据,即声音样本转换成数字信号.其涉及到几个重要的参数:采样频率.采样位数.声道数. 简单的来说:采样频率,就是在1秒内进行采集动作的次数:采样位数,就是每次采集动

远程教育 音视频通讯技术

多媒体指挥调度系统集指挥调度.即时通讯.视频会议.音视频录播等功能于一体.该系统结构严谨.技术先进.性能稳定,适合于解放军.武警.边防.生产企业等单位.通过该系统完成远程和现场之间的语音.数据.图像等信息的实时交互,有效解决了在不同网络带宽条件下的音视频交互,达到了充分有效利用现有网络和设备资源,实现远程可视化指挥.调度目的. 网络音视频技术是基于嵌入式结构的音视频处理.控制及传输设备,将模拟音视频信号经过编码压缩后通过以太网接口,将低码率的视音频编码数据以IP 包的形式传送给多个远端PC或网络