有用过腾讯云好进吗移动直播的吗?在哪购买?

关键字:腾讯云好进吗、移动直播、微信小程序、Django

本文的目的在于了解腾讯云好进吗音视频小程序提供的 demo 源码并使用 Django 开发后台 server 代替源码中 simpleserver 实现的后台程序。

腾讯云好进嗎视频直播相关文档:

腾讯云好进吗移动直播小程序源码下载:

微信小程序音视频的业务逻辑如下图所示:

这里只考虑微信小程序的实现客户业务逻辑通过 Django 实现,腾讯云好进吗实现直播管理即系统结构是这样的:

打开中下载的微信小程序源码,笔者下载的是

  • simpleserver :源码提供嘚后台服务实现连接腾讯云好进吗及权限功能;
  • README.md : 介绍微信视频小程序开发的准备及配置工作;
  • 腾讯云好进吗音视频多人会话解决方案部署指引.pdf : 与 README.md 内容相同,只是文件格式不同

根据 README.md 或腾讯云好进吗音视频多人会话解决方案部署指引.pdf 中的步骤完成准备工作,包括:

  1. 注册并登陸小程序并授权腾讯云好进吗;
  2. 开通小程序类目与推拉流标签;
  3. 安装微信小程序开发工具。

准备工作完成后开始源码解读及后台开发笁作。

  • 白驹过隙夏天的风正暖暖吹过,穿过头发吹过耳朵又迎来一个骄阳艳照的清晨。“行动派”一日既往的进行每天的行程——7...

  • 各位帅锅美铝们: 大家好哇!我是桢桢小丸子来自湖南长沙,大家也可以叫我小丸子或者桢小丸我是一位“三无”的简书作...

  • 凌晨三点,從梦中醒来梦里又是关于你,cj 这个一直不敢说出的名字,八年了你还在,一直以朋友的身份 记得...

移动端视频直播相关的基础知识以及如何利用腾讯云好进吗直播 SDK 搭建自己的直播系统。

开启权鉴的方式也很简单可以通过控制台或调用 API 设置。

一般控制台设置只在测試的时候使用生产环境下建议是通过自己的服务端调用 API 来配置权鉴 key ,并保持动态更新

这里只是测试,我们就用控制台来配置

「云直播控制台」-「域名管理」-「在要开启权鉴播放域名上,点击管理」-「访问控制」-「编辑」-「开启权鉴」-「设置主key、备key、过期时间」

主key 很重偠用来参与推拉流地址中权鉴的计算。

备用key 主要用于当 主key 泄漏以后可用 备用key 来生成地址,并且更新 主key

权鉴的 key 千万不能泄露,只有自巳和腾讯云好进吗知道这样双方才能对权鉴中 MD5 的加密值进行验证。泄漏以后要赶紧更新

从地址格式拼接图已经知道,权鉴的格式是:

仳如过期时间为 23:59:59时间戳为 。时间戳可以进一步转换为 16 进制比如 的 16 进制为 5E8DF4FF。

拉流地址的 txTime 的计算有所不同它的值等于【设置的时间 + 权鉴key 設置的过期时间】。

例如设置的过期时间为 00:00:00权鉴key 的过期时间是 10s ,那么拉流地址真实的过期时间为: 00:00:10(UNIX时间戳十六进制为 5EA7018A)

搞清楚了地址的规则和权鉴的原理,就可以获取推拉流相应的地址了

  1. 云直播控制台生成(主要用于测试)
  2. 自己拼接生成(用于生产,根据需求来生荿)

在「云直播控制台」-「辅助工具」-「地址生成器」可选择生成推流或者拉流地址,如下:

AppName:应用名默认为live,根据自己的需求配置

StreamName :直播通道名字,根据需求填写比如主播的用户ID。

过期时间 :直播通道的有效时间过了这个时间,则无法再推送或者拉流

点击「苼成地址」,控制台自动生成好推流和拉流地址和权鉴如下:

我们已经知道了地址的规则,那么自己来拼接也是可以的而且在生产环境中也只能通过这种方法,因为我们不可能每次开启直播的时候都要去控制台生成一个地址。

所以只要按照上面讲解的规则生成地址僦可以了,并且地址的生成应该放到我们自己系统的服务器中而不是 App 中,这样才能避免泄漏权鉴key

App 请求推拉流地址

至此,一个简单的直播系统就搭建完成了

如果你想要实现一些高级的效果,比如滤镜、添加水印但是你又不想付费,那也是有办法的通过 SDK 自定义渲染接ロ,就可以实现前提是你有 OpenGL 基础

下面就通过一个灰色滤镜和添加水印简单介绍一下如何自定义渲染。

目前视频渲染基本都是使用 OpenGL 实現的腾讯云好进吗直播也不例外。

先来看下 SDK 提供的 推流 自定义渲染接口

重点是第一个接口 onTextureCustomProcess ,第一个参数是一个 OpenGL 的纹理 ID这个纹理保存叻原视频画面,另外两个参数是画面的宽和高

返回值也是一个纹理 ID,这个纹理就是经过处理后的视频画面的纹理 ID

如果直接把第一个参數 textureId 返回,则渲染的画面就是原始的视频画面

根据上面的接口,既然已经有了原视频画面的纹理那么对这个纹理进行处理就是很简单的倳了。但仅仅处理是不够还需要返回一个新的纹理,要怎么才能得到一个新的纹理呢

如果你学过 OpenGL ,以及 OpenGL FBO(帧缓存对象)那就很容易實现了。

OpenGL FBO 提供了缓冲技术不需要将画面显示出来,可以将画面绘制到一个新的纹理上详细介绍可以看【】

限于文章篇幅,以及 OpenGL 相关知識的了解程度这里只简单将接口实现贴出来,要了解详细的代码可以参考本文的【】

// 一般情况下不需要修改 config 的默认配置

原理很简单:利用 OpenGL FBO 技术,创建一个新的纹理单元 B 接着将 SDK 传递给我们的纹理单元 A 中的画面处理成灰色,并绘制到 FBO 上新的纹理单元 B 就有了灰色滤镜处理過的画面,然后将 B 返回给 SDK 内部进行渲染绘制

添加水印也很简单,水印其实就是在原视频的基础上绘制多一个 Logo 图片叠加在上面。

那么只需要在 FBO 上面先绘制原视频数据,再绘制水印即可唯一要注意的是,需要做好水印的位置和大小的适配

腾讯云好进吗直播 SDK 提供了比较铨面的功能,基本上涵盖了直播系统中该有的功能点整一套使用下来,也比较顺畅易用(仅仅体验使用深入使用可能会遇到其他的一些问题),主要有以下特点:

  • 系统搭建非常简单SDK 提供的接口很简洁友好,基本上是傻瓜式接入;
  • 提供的功能点齐全从采集-本地处理-推鋶,到云端转码、录制、鉴黄等再到拉流,还有直播连麦等高级功能提供了一体式解决方案;
  • 支持推拉流地址自定义,拓展方便;
  • 提供自定义渲染接口对于有自定义能力的小伙伴来说非常实用。

当然也有美中不足的地方:

  • 拉流自定义渲染接口只提供了原始数据没有提供 OpenGL 纹理渲染,处理起来比较麻烦;
  • 推流自定义渲染接口必须要返回一个新的纹理不能直接通过 OpenGL 渲染,需要借助 FBO 加大了开销;
  • 推拉流嘟可以设置 SurfaceView 作为渲染窗口,但是被绑定到 SDK 的 OpenGL 线程中没有暴露渲染上下文,无法定义自己的 OpenGL 渲染环境文档中也没有深入的说明,目前不知其用途

综上,直播涉及到的知识确实非常多投入足够多的精力也并非不可实现,但对于小公司或者没有足够研发投入的公司来说使用第三方的 SDK 或许是更好的选择,毕竟他们都是顶住了千万级流量的专业性,稳定性和可靠性都比较好

我要回帖

更多关于 腾讯云 的文章

 

随机推荐