视频链接:
2.17 live-player 与 live-pusher 组件介绍:如何在小程序中实现直播功能?(二)
片 1
上节课我们学习了live-pusher、live-player组件的主要属性,了解了它们的使用限制,这节课我们继续学习这两个组件,并着手在小程序项目中,使用这两个组件,实现直播功能。
如何用小程序实现在线直播?
片 2
接下来我们看一下怎么使用这两个组件,再加上腾讯云的云直播功能,在小程序里面实现直播功能,这也是这节课开始时提出的问题。
云直播:https://console.cloud.tencent.com/live/livestat
资源包:https://console.cloud.tencent.com/live/resources/package?type=traffic
域名管理:https://console.cloud.tencent.com/live/domainmanage
片 3
对于个人开发者或小微团队,即使从零搭建一个基于 nginx-rtmp 的直播服务器,也比较麻烦。并且这样的服务器也只能用于 demo,并不合适在生产环境中使用。腾讯云云直播是一个现成的直播服务器(见上面网址)解决方案,我们可以在几分钟内直接开通并使用。
第一步,首先在上面的主页网址申请开通云直播功能,然后在资源包标签页下,购买一个流量包,500MB 的流量包就足以做实践了。
第二步,也是接下来最麻烦的地方,我们要做域名管理标签页下,进行域名管理,至少要有一个推流域名和一个播放域名。这两个域名要不同。推流域名可以使用官方的(例如我的推流域名是
64400.livepush.myqcloud.com),播放域名需要一个自己的域名(例如我使用的是 live.rixingyike.com)。
播放地址和推流地址有一定的规则,在右侧地址管理的页面下,可以手动生成地址。也可以根据算法,自行实现地址的生成逻辑。稍后这一块我们会在本课源码中看到。
第三步,在有了播放域名和推流域名之后,就可以在小程序中使用 live-pusher、live-player 实现直播功能了。
(可以从腾讯云网站,及本课视频中查看示例及运行效果)
好,这节课就讲到这里。这节课我们主要学习了如何使用腾讯云的云直播功能。下节课我们学习如何使用ffmpeg进行推拉流的验证。
2.18 三
上节课我们主要学习了如何使用腾讯云的云直播功能,这节课我们看一看,如何使用ffmpeg进行推流、拉流的验证。
安装 ffmpeg
片 4
在创建了云直播环境,或者自己基于 nginx-rtmp 搭建了一个流媒体服务器之后,如何验证我们的服务器是否配置成功了呢?有一个开源软件 ffmpeg,它可以帮助我们。
片 5
什么是 ffmpeg?ffmpeg 是音视频领域大名鼎鼎的,一套开源的,跨平台的开源软件套装。
前面的"FF"代表"Fast Forward",意思是快速的、前瞻的意思。ffmpeg 的视频采集功能非常强大,不仅可以采集视频采集卡或者 USB 摄像头的图像,还可以进行屏幕录制,同时还支持多种协议,将视频流直接推送流媒体服务器。对于支持 rtmp 推流协议的服务器,使用 ffmpeg 就可以实现直播推流。此外,它还有视频格式转换、视频裁剪、给视频加水印等功能,国内有不少音视频产品,尤其是教育领域、娱乐领域的产品,都是基于它做的二次开发。
那么,我们如何使用这个软件呢?
首先,我们可以从上面的官网下载安装最新的 ffmpeg 软件包,这个软件包是跨平台的,在 windows 和 mac 电脑上都可以安装。在 mac 电脑上,还可以 brew install ffmpeg 这个指令,直接进行安装。
在安装以后,接下来我们看一下,怎么样使用这个软件,验证推拉流的地址。
在验证推流地址之前,首先我们要知道自己电脑的音视频设备的名称,这是在推流的时候要使用的,我们需要用一个指令来查看自己的设备名称。
使用 ffmpeg 指令查看设备名称
片 6
ffmpeg -f avfoundation -list_devices true -i ""
ffmpeg -f dshow -list_devices true -idummy
AVFoundation video devices:
[0] FaceTime HD Camera
[1] Capture screen 0
AVFoundation audio devices:
[0] Apowersoft Audio Device
[1] Built-in Microphone
片 7
我们看一下这两条指令。在网站有些教程,使用是第二行指令,但这个指令是仅适用于 windows 电脑的,如果用这行指令在 mac 电脑上执行,会遇到一个 dshow 格式无法识别的错误。dshow 代表 Windows DirectShow input device,是 windows 电脑专有的。
第一行指令才是在 mac 电脑上使用的,而 AVFoundation 框架是苹果平台上专门处理音视频的框架。
在指令执行以后,我们就可以拿到一个设备列表。例如在我的电脑上,取到的摄像头设备名称之一是 FaceTime HD Camera,而音频设备名称之一则是 Built-in Microphone,接下来我选择这两个设备作为输入设备。
使用工具验证推拉流地址
片 8
ffmpeg 可以将本地一个视频文件作为视频源,直接推向服务器。这种方式方便我们快速验证推流地址是否有用。
使用 ffmpeg 推视频文件:
ffmpeg -re -i ~/Download/2.14.mp4 -f flv "rtmp://64400.livepush.myqcloud.com/live/default?txSecret=56dd7f9d4a3f2a8aba89097576a574cf&txTime=63FA6BCB"
使用设备推流:
ffmpeg -f avfoundation -framerate 30 -video_size 1280x720 -i "FaceTime HD Camera:Built-in Microphone" -vcodec libx264 -f flv -x264-params bframes=0 "rtmp://64400.livepush.myqcloud.com/live/default?txSecret=56dd7f9d4a3f2a8aba89097576a574cf&txTime=63FA6BCB"
播放验证:
ffplay "rtmp://live.rixingyike.com/live/default?txSecret=4a1d6b925b6a5cf74040fce581dc9b3e&txTime=5ED6A482"
片 9
这是使用 ffmpeg 进行视频文件推流的指令,可以将前面的 2.14.mp4 文件换成自己的视频文件,不一定是 mp4 文件,使用 mov 文件也可以。最后面的地址,是我们的推流地址,这个地址可以直接在腾讯云的网站上拿到。
除了文件推流,不可以使用直接使用设备推流。在上一步我们拿到的设备名称,摄像头和麦克风设备名称,在这里就可以用到了。在测试时,我们只需要将最后的推流地址改为自己的推流地址就可以了。在第一次调用这个指令时,ffmpeg 会请示我们充许使用摄像头及麦克风数据,毕竟这属于隐私数据,在使用之前需要得到授权。
在开始推送以后,我们在同一台电脑上另起一个终端窗口,就可以使用 ffplay 指令,再加一个播放地址,就可以测试我们是否推流成功了。播放地址和推流地址是不一样的,这个地址同样也可以在腾讯云网站上获取。
(可以从腾讯云网站、及本课视频中查看示例及运行效果)
如果我们是自己搭建的流媒体服务器,可以使用 ffmpeg 进行推拉流的验证。如果使用的是腾讯云服务器,除了上面的方法,还可以使用网站本身提供的工具。
好,这节课就到这里。这节课我们主要学习了安装与使用ffmepg,以及如何使用ffmpeg进行推拉流的验证。下节课我们学习在小程序中,如何结合腾讯云与ffmpeg软件,测试推流与拉流的功能。
2.19 四
上节课我们主要学习了如何安装与使用ffmepg,以及如何使用ffmpeg进行推拉流的验证。这节课我们学习在小程序中,如何结合腾讯云与ffmpeg软件,进行测试推流与拉流功能的测试。
辅助工具之 web 推流:
流管理页面:
片 10
我们可以在腾讯云->云直播->辅助工具->web 推流这个页面(见上面网址),进行推流测试。这个是一个使用 Flash 技术实现的推流软件,在使用之前需要将 Flash 插件启用,在 Chrome 浏览器中要注重查看是否有插件被禁止运行的提示,如果有,手动开启后才可以推流。
在腾讯云->云直播->流管理这个页面,可以实时查看当前有哪些流正在推送中,并且可以直接单击“测试”链接查看是否可以播放。这个也是 Flash 技术实现的播放功能。
片 11
我们还可以交叉使用 ffmpeg 和腾讯云网站提供的功能,例如使用 ffmpeg 在终端里推流,而使用网站上流管理页面,进行播放测试。在测试过程中,可能会遇到上面这个错误(见上面),但这个错误不用管,使用小程序或者使用 ffplay 是可以播放的。
(可以从腾讯云、本课视频中查看示例及运行效果)
在小程序中测试推流与播放
片 12
在小程序中使用的 live-pusher 与 live-player 组件,不能在微信开发者工具中测试,只能在手机设备上测试。我们可以使用 ffmpeg 进行推流,然后在手机上进行播放测试;或者在手机上推流,在终端中使用 ffplay 进行播放测试。
(可以从终端中、本课视频中查看示例及运行效果)
片 13
从源码的运行效果中,我们可以看到,虽然 live-pusher 与 live-player 是原生组件,但是它们却位于普通组件的下方。原生组件不是一直位于普通组件的上方吗?
这是由于同层渲染实现的,那么什么是同层渲染呢?
好,这节课就讲到这里。这节课我们主要学习了live-pusher、live-player组件,以及如何使用它们,在小程序中实现直播功能。下节课我们继续学习这两个组件的使用,并且看看同层渲染是怎么回事,以及在小程序中使用同层渲染。
2020 年 6 月 2 日