缘由

最近帮朋友看一个直播网站的源码,发现这份直播源码借助 阿里云 、腾讯云这些大公司提供的SDK 可以非常方便的搭建一个直播网站。下面我们来给大家讲解下如何借助 腾讯云 我们搭建一个简易的 直播示例

云直播架构

主要分三部分

1:直播端 通过设备 直接通过 直播服务提供方 的推流 地址 进行直播视频,这些直播流视频 会推送到  直播服务提供方  直播服务器云存储

2:直播服务提供方  会将 云存储的 视频流 转发到 CDN 节点

3:观众 就通过 各种终端 看直播(此时就会根据不同游客 会 访问不同的节点 )

生成推送流URL

根据 腾讯云直播官方  https://cloud.tencent.com/product/lvb 介绍,所有用户都可以领取20G 的流量,够我们测试了。

准备工作

1:官方注册账号 领取20G流量 官方地址: https://cloud.tencent.com/product/lvb

2:需要一个备案过的域名(用户播放直播视频域名) 。这就需要自己购买了

3:支持推流的app。易推流 只支持IOS 、腾讯官方小直播 DEMO:https://cloud.tencent.com/document/product/267/32732#.E5.B0.8F.E7.9B.B4.E6.92.AD-demo

推流URL代码

/**
 * 获取推流地址
 * 如果不传key和过期时间,将返回不含防盗链的url
 * @param domain 您的推流域名
 *        stream_id 您用来区别不同推流地址的唯一流ID
 *        key 安全密钥
 *        time 过期时间 sample 2016-11-12 12:00:00
 * @return String url */ public static function getPushUrl($domain, $stream_id, $key = null, $time = null){
    if($key && $time){
        $tx_time = strtoupper( base_convert(strtotime($time),10,16));
        $tx_secret = md5($key.$stream_id.$tx_time);
        $ext_str = "?".http_build_query([
                "txSecret"=> $tx_secret,
                "txTime"=> $tx_time
            ]);
    }
    return "rtmp://".$domain."/live/".$stream_id.( isset($ext_str) ? $ext_str : "");
}

其中domain 和 key 都是通过腾讯控制台获取的 。如下图

而其中的stream_id 你可以理解为直播房间id,在具体开发中 不要重复就好了

播放流URL

生成播放流URL非常简单,但是需要 有自己备案过得域名。然后在后台添加播放域名就行了。

添加完成域名之后 就需要将域名 cname 到 下图二中的官方分配地址

播放URL代码

/**
 * 获取播放地址
 * @param domain 您的播放域名
 *        stream_id 您用来区别不同推流地址的唯一流ID
 * @return String url */ public static function getPlayUrl($domain, $stream_id){
    $data = [
        "rtmp://".$domain."/live/".$stream_id,
        "http://".$domain."/live/".$stream_id.".flv",
        "http://".$domain."/live/".$stream_id.".m3u8"
    ];
    return $data[1];
}

其中 domain 就是刚在添加的域名。stream_id 就是生成推送流里面的参数。播放流可以生成三种模式,flv 和 m3u8。一般我们flv格式延迟会低些

效果展示

获取推送Url 和 播放Url

推送流Url:rtmp://44159.livepush.myqcloud.com/live/54php?txSecret=安全保密替换掉&txTime=5CC066FD
播放流Url:http://lvb.54php.cn/live/54php.flv

使用腾讯小直播软件直播

易推流App

前端演示地址:http://m.54php.cn/demo/lvb ,可能无法看到,因为浪子没有直播了

原文地址:快速搭建一个直播Demo
标签:直播   lvb

智能推荐

快速搭建一个直播Demo的更多相关文章

  1. Electron入门笔记(一)-自己快速搭建一个app demo

    Electron学习-快速搭建app demo 作者: 狐狸家的鱼 Github: 八至 一.安装Node 1.从node官网下载 ,最好安装.msi后缀名的文件,新手可以查看安装教程进行安装. 2. ...

  2. 快速搭建一个“微视”类短视频 App

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由腾讯云视频发表于云+社区专栏 关注公众号"腾讯云视频",一键获取 技术干货 | 优惠活动 | 视频方案 " ...

  3. jquery+flask+keras+nsfw快速搭建一个简易鉴黄工具

    1. demo 地址:http://www.huchengchun.com:8127/porn_classification 接口说明: 1. http://www.huchengchun.com:8 ...

  4. NodeJS 最快速搭建一个HttpServer

    最快速搭建一个HttpServer 在目录里放一个index.html cd D:\Web\InternalWeb start http-server -i -p 8081

  5. vuejsLearn---通过手脚架快速搭建一个vuejs项目

    开始快速搭建一个项目 通过Webpack + vue-loader 手脚架 https://github.com/vuejs-templates/webpack 按照它的步骤一步一步来 $ npm i ...

  6. [原创] zabbix学习之旅五:如何快速搭建一个报警系统

    通过之前的文章,我们已搭建好zabbix server.agent和mail客户端,现在万事俱备,只差在server的界面中进行相应配置,即可快速搭建一个报警系统.总的来说,快速搭建一个报警系统的顺序 ...

  7. 快速搭建一个本地的FTP服务器

    快速搭建一个本地的FTP服务器   如果需要开发FTP文件上传下载功能,那么需要在本机上搭建一个本地FTP服务器,方便调试. 第一步:配置IIS Web服务器 1.1 控制面板中找到"程序& ...

  8. 快速搭建一个Spring Boot + MyBatis的开发框架

    前言:Spring Boot的自动化配置确实非常强大,为了方便大家把项目迁移到Spring Boot,特意总结了一下如何快速搭建一个Spring Boot + MyBatis的简易文档,下面是简单的步 ...

  9. 快速搭建一个Quartz定时任务【转载,好文 ,值得收藏,亲身试用 效果不错】

    Quartz.NET 入门 概述 Quartz.NET是一个开源的作业调度框架,非常适合在平时的工作中,定时轮询数据库同步,定时邮件通知,定时处理数据等. Quartz.NET允许开发人员根据时间间隔 ...

随机推荐

  1. 深度学习在graph上的使用

    原文地址:https://zhuanlan.zhihu.com/p/27216346 本文要介绍的这一篇paper是ICML2016上一篇关于 CNN 在图(graph)上的应用.ICML 是机器学习 ...

  2. unity 如何在botton AddListen中传递参数调用函数

    使用Deleget方法包含该函数即可. levelItem.GetComponent<Toggle().onValueChanged.AddListener(SetSelectedLevel(l ...

  3. 十三python基础之socket编程

      阅读目录 一 客户端/服务器架构 二 osi七层 三 socket层 四 socket是什么 五 套接字发展史及分类 六 套接字工作流程 七 基于TCP的套接字 八 基于UDP的套接字 九 粘包现 ...

  4. 论文阅读笔记四十:Deformable ConvNets v2: More Deformable, Better Results(CVPR2018)

    论文源址:https://arxiv.org/abs/1811.11168 摘要 可变形卷积的一个亮点是对于不同几何变化的物体具有适应性.但也存在一些问题,虽然相比传统的卷积网络,其神经网络的空间形状 ...

  5. Spring Boot mybatis HashMap +layui 通用分页

    背景: mybatis 常用数据查询的方法都是先建实体类,再建Mapper,最后写Service,如果只是单纯的去查询数据显示,这样操作太麻烦.本文就以mybatis +layui创建通用分页类,简化 ...

  6. css固定div头部 滚动条滚动内容

    页面布局,固定头部,滚动下方内容 实际场景 在制作页面的时候,经常会遇到要这样的情况:整个页面,整体分三大模块,头部固定,内容区域,左边固定,右边可以滚动. 最终想要的效果 案例源码 <!DOC ...

  7. python数据类型——数据转换

    数据类型有很多种,比如数值和字符,比如6和a,字符是需要加双引号的,下面的例子运行的结果是不一样的,数值会相加而字符会相连 print(6+6)print("6"+"6& ...

  8. 即将上线的Imcash是何方神圣?

    区块链的诞生,让数字资产来到这个时代,每个人的财产分布又多了一种十分重要的选择. 当下每个人最需要的就是一款优秀的数字资产管理平台,目前市面上各种平台层出不穷,在线管理.离线管理.全节点钱包.轻钱包. ...

  9. Git使用总结之修改了用户名之后git无法使用

    错误提示: unable to access 'http://git.ruitukeji.com:3000/RuiTu/heshanghui-andriod.git/': The requested ...

  10. Codeforces 811C Vladik and Memorable Trip (区间异或最大值) (线性DP)

    <题目链接> 题目大意: 给你n个数,现在让你选一些区间出来,对于每个区间中的每一种数,全部都只能出现在这个区间. 每个区间的价值为该区间不同的数的异或值之和,现在问你这n个数最大的价值是 ...