搜故事,从300万个故事到海量知识百科的华丽转变!

小程序小故事——音视频组件介绍

时间:2020-05-31

音频小故事

提示:本文共有 4012 个字,阅读大概需要 9 分钟。

小程序小故事——音视频组件介绍小程序小故事——音视频组件介绍

快应用

百家号05 1118:04

2017年下半年,微信6.5.21版本支持在线音视频功能。开发者可以通过两个音视频组件 live pusher 和 live player 实现实时地在线直播、视频通话、语音通话等功能。

下面我们将详细介绍一下音视频组件在线直播和视频通话这两个应用场景。

在线直播

01在线直播的应用场景有哪些?

在游戏直播、远程授课、以及企业内部的培训分享等场景中,都可能会用到在线直播功能,直播的应用场景可以遍及各行各业。

比如微信电竞是一款游戏直播产品,以小程序为产品呈现方式。

比如在医疗行业,专家医师往往需要全国各地飞进行学术交流和培训,出差本身耽误了医生大量时间,在线远程授课能大大减少这里的时间耗用。

小程序中的 live pusher 和 live player 两个组件 ,都有一个叫做live live pusher 中对应 mode 属性为 SD, HD, FHD的模式,专门为在线直播而设计,通过小程序的音视频接口的live 模式,可以实现上述应用场景。

02在线直播的内部原理是什么?

主播端使用 live pusher ,它在小程序的内部是一个推流引擎,它负责对手机摄像头和麦克风的数据进行采集和编码,并通过 url 参数指定的 rtmp 推流地址上传到云端。

云端的作用类似信号放大器,它负责将来自主播端的一路音视频流数据进行放大,将数据实时并且无差异的负责并扩散到全国各地,从而解决主播和观众端之间距离太远(比如,跨地区和跨运营商)的问题。

观众端使用 live player 进行播放,它在小程序的内部是一个在线播放器,负责从云端实时拉取音视频数据并进行解码和渲染。由于云端的放大效应,每一个观众都能在离自己比较近的云服务器上拉取到实时且流畅的音视频流。

03我怎么用小程序实现在线直播?

step1:开通一个云直播服务(比如 腾讯云 ),或者自己搭建一个rtmp服务器(例如 nginx rtmp 服务)。

step2:生成推流 url ,推流地址一般以 “rtmp://” 打头,比如rtmp://8888.livepush.myqcloud.com/live/8888 test就是一个典型 rtmp 推流 Url。

step3:为你的小程序增加一个 live pusher 标签,并将 url 参数指定为你在 step2 中生成的推流 url。

同时, live pusher 的 mode 参数可以指定为 HD 或者 FHD,这是在线直播场景中比较推荐的画质。

同时,你还可以通过 live pusher 的 beauty 和whiteness 等参数设定美颜和美白等级。

step4:生成推流 url 和播放地址,推流一般都是 rtmp:// 打头的 url,而播放地址则有两种选择,分别是 “rtmp://” 开头的 rtmp 播放协议,“http://” 打头和“.flv”结尾的的 http flv 播放协议,推荐使用后者,因为这种播放地址各个云厂商都优化的比较好。

step5:为你的小程序增加一个 live player 标签 ,并将 src 参数指定为你在 step4 中生成的播放 url。同时, live player 的 mode 参数请指定为 live,orientation 和 object fit 属性可以用于调整画面布局,min cache 和 max cache 则可以用于控制观众跟主播之间的延时大小,推荐的设置是 min cache = 2, max cache = 5。

常见问题

01时延太高是怎么回事?

在线直播的延时跟播放协议和播放器参数有很大的关系, live player 的 min cache 和 max cache 用于控制播放器端的最小时延和最大时延。其中,这里所说的“最小”和“最大”是根据观众端当时的网络情况而定的,如果网络情况比较好,那么播放器的时延就会趋向于 min cache,而如果网络情况比较差,那么播放器的时延就会趋向于 max cache。

另外,rtmp 协议 和 http flv 协议的播放地址延时一般比较低,而 hlsm3u8协议的延时则相对较高。

02主播网络不好怎么办?

在一场直播过程中,如果观众端的网络不好,那么观看体验仅仅影响到当前观众;如果主播的网络不好,那么所有观众的观看体验都会很糟糕。因此主播的上行网络质量很重要,如果主播的上行网络质量不理想,比如时好时坏,或者上行小水管,不足以支持基本的直播需求,有两种办法可以解决问题:

一种办法是设置 live pusher 的 min bitrate 参数,比如 400kbps, 这样一来,当主播网络不给力的时候, live pusher 就会给主播的编码器发送降低画质的命令,通过降低编码器吐出的数据量来给主播的网络减负。但这种办法产生的副作用也非常明显,就是主播的画质会变差。

另一种方法则是借助 live pusher 的 NET BUSY 通知进行 UI 上的告警提示, live pusher 在主播上行网速不给力时会通过 onPushEvent 通知抛出 PUSH WARNING NET BUSY1101 事件,这个时候你可以提示主播通过靠近路由器或者切换 4G 的方法来改善当前的网络质量。

03HLSm3u8协议为什么播放不了?

微信小程序在最早期的版本中就集成了 video 标签,该标签即可播放 HLS(m3u8)协议的播放地址,但是此种播放协议的时延一般都在 20 秒以上,所以如果对时延要求较高,则推荐使用 live player 标签播放 http flv 协议的直播地址。

视频通话

01小程序 + 视频通话有什么优势?

我们可以发现目前保险行业会通过现场定损的方式处理车险理赔,这种方式需要派定损员驱车前往事发地点进行损伤判定,每次的出车成本非常高。

如果要采用远程电话解决,保险公司无法简单通过语音沟通确认损伤程度,而且照片采集很难规避定车骗保的可能,所以**实时的视频通话**可以解决这种问题。

小程序中 live pusher 和 live player 两个组件 ,都有一个叫做 RTC 的模式,通过这种模式,可以在小程序实现实时视频通话。

02视频通话的内部原理是什么?

live pusher 和 live player 两个组件的 RTC 模式,主要是实现端到端能够以很低的时延传输音视频数据。

这样一来,视频通话的双方 A 和 B 就可以各自拉通一路方向相反的音视频链路,从而实现 A 和 B 之间的双向低延时的音视频数据传输。与此同时,RTC 模式还会开启内置的 AEC 回声抑制,避免通话的双方会因为本地麦克风对播放器的声音进行二次采集而引起的回声问题。

03我怎么用小程序实现视频通话?

step1:开通一个云直播服务(比如 腾讯云 ),或者自己搭建一个rtmp服务器(例如 nginx rtmp 服务)。

step2:生成两对 rtmp 推拉流 url :一对是用于 A 端推流的 push url a 和 用于播放 A 端视频的 play url a;另一对是用于 B 端推流的 push url b 和 用于播放 B 端视频的 play url b;

step3:A端添加一个 live pusher 标签,指定 mode 为 RTC,并将 url 输定设定为 push url a。

step4:A端添加一个 live player 标签,指定 mode 为 RTC,并将 src 输定设定为 play url b。

step5:B端添加一个 live pusher 标签,指定 mode 为 RTC,并将 url 输定设定为 push url b。

step6:B端添加一个 live player 标签,指定 mode 为 RTC,并将 src 输定设定为 play url a。

常见问题

01通话时延太高了怎么办?

小程序的 RTC 模式解决了双向或者多人实时音视频通话在终端所需要的各项技术组件,但是通话线路本身可能也会引入很高的延时,所以要确保视频通话的 A 和 B 双方所使用的 rtmp 线路要有很低的时延。

如果是自己搭建rtmp服务器(例如 nginx rtmp 服务),请检查 nginx rtmp 的服务端参数设置,确保不要在服务器端引入太多音视频数据缓存。

如果是使用腾讯云的超低延时线路,那么要注意给 RTC 模式下的 live player 传递带防盗链签名的播放 url。

02感觉画面很卡应该如何处理?

小程序的 RTC 模式主要用于视频通话,由于这类场景以交流为重,所以小程序会有限保证声音的流畅,相应的,视频数据的发送会被放在第二优先级上。因此,如果网络有波动,小程序会舍弃尚未发送出去的视频数据,优先保障音频数据的发送。

所以如果在 RTC 模式下,建议不要给 live pusher 设置太高的画质,也就是不要将 min bitrate 和 max bitrate 设置的太大,一般而言,推荐 min bitrate 设置为 300kbps, max bitrate 设置为 800kbps,即可满足常规视频通话的需求。(来源:微信开发者)

本文仅代表作者观点,不代表立场。系作者授权百家号发表,未经许可不得转载。

快应用

百家号最近更新:05 1118:04

简介:第一时间深度解析小程序最新动态!

作者最新文章05 1118:0305 1023:1505 0915:42相关文章东方头条05 09东方头条05 11科学与技术05 11普华有策05 10消息新媒体05 10??Baidu京ICP证030173号返回顶部

看到此处说明本文对你还是有帮助的,关于“小程序小故事——音视频组件介绍”留言是大家的经验之谈相信也会对你有益,推荐继续阅读下面的相关内容,与本文相关度极高!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。
相关阅读
腾讯技术分享:微信小程序音视频技术背后的故事

腾讯技术分享:微信小程序音视频技术背后的故事

网络,场景,时候,协议,技术,视频,音视频,保险公司,娃娃,时快时慢,车主,波动,定损员,我们需要,视频通话,链路,卡顿,程操,非常流行,快一点,新引,新的科技,典型,内容,后果,原理,双方,图片,声音,坏毛病

2020-06-01 #故事会

腾讯技术分享:微信小程序音视频技术背后的故事

腾讯技术分享:微信小程序音视频技术背后的故事

网络,场景,时候,协议,技术,视频,音视频,保险公司,娃娃,时快时慢,车主,波动,定损员,我们需要,视频通话,链路,卡顿,程操,非常流行,快一点,新引,新的科技,典型,内容,后果,原理,双方,图片,声音,坏毛病

2020-07-10 #长篇故事

腾讯技术分享:微信小程序音视频技术背后的故事

腾讯技术分享:微信小程序音视频技术背后的故事

网络,场景,时候,协议,技术,视频,音视频,保险公司,娃娃,时快时慢,车主,波动,定损员,我们需要,视频通话,链路,卡顿,程操,非常流行,快一点,新引,新的科技,典型,内容,后果,原理,双方,图片,声音,坏毛病

2007-07-16 #故事大全

小程序小程序??小故事8——自定义组件

小程序小程序??小故事8——自定义组件

组件,文件,自定义,基础,代码,小程序,界面,页面,开发者,模块,模版,写一个,逻辑,局部,样式,特性,版权,可以将,创建一个,文件中,相对独立,目录下,这四个,应在,下拉,传统,以下内容,功能模块,写法,常会

2020-09-24 #短篇故事

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

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

音视频,技术,实时,微信,小程序,腾讯,直播,即时通讯,协议,团队,标签,实时视频,后台,视频云,浏览器,移动端,功能,房间,方案,源码,原理,效果,数据,标准,问题,视频通话,思路,架构,版本,编码

2010-09-07 #小故事

腾讯云音视频技术支撑远程会议 在线课堂 疫情期流量带宽翻倍增长

腾讯云音视频技术支撑远程会议 在线课堂 疫情期流量带宽翻倍增长

腾讯,音视频,疫情,会议,场景,技术,李郁,直播,产品,环境,业务,课堂,领域,小程序,远程办公,解决方案,企业,实时,多媒体,实验室,微信,在线,远程会议,区域,流量,屏幕,心理健康,方案,电话,特性

2017-05-08 #故事阅读

微信小程序开发中如何实现组件的动画效果

微信小程序开发中如何实现组件的动画效果

动画,组件,参数,微信,实例,文件,小程序,文件中,缩放,函数,倍数,代码,属性,效果,效果图,方法,范围,队列,透明度,关键,动作,官方,原点,坐标,宽度,文档,数据,案例,程序,调用函数

2018-06-20 #长篇故事

小程序小故事10——群聊能力

小程序小故事10——群聊能力

小程序,开发者,文档,用户,百家号,功能,参数,名称,微信,作者,能力,组件,卡片,接口,文章,小故事,凭证,小游戏,方式,标识,生命周期,应用,数据加密,不一样,第一时间,还可以,不变,信息,个人观点,具体步骤

2020-06-02 #小故事