快速搭建一个直播Demo
缘由
最近帮朋友看一个直播网站的源码,发现这份直播源码借助 阿里云 、腾讯云这些大公司提供的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的更多相关文章
- Electron入门笔记(一)-自己快速搭建一个app demo
Electron学习-快速搭建app demo 作者: 狐狸家的鱼 Github: 八至 一.安装Node 1.从node官网下载 ,最好安装.msi后缀名的文件,新手可以查看安装教程进行安装. 2. ...
- 快速搭建一个“微视”类短视频 App
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由腾讯云视频发表于云+社区专栏 关注公众号"腾讯云视频",一键获取 技术干货 | 优惠活动 | 视频方案 " ...
- jquery+flask+keras+nsfw快速搭建一个简易鉴黄工具
1. demo 地址:http://www.huchengchun.com:8127/porn_classification 接口说明: 1. http://www.huchengchun.com:8 ...
- NodeJS 最快速搭建一个HttpServer
最快速搭建一个HttpServer 在目录里放一个index.html cd D:\Web\InternalWeb start http-server -i -p 8081
- vuejsLearn---通过手脚架快速搭建一个vuejs项目
开始快速搭建一个项目 通过Webpack + vue-loader 手脚架 https://github.com/vuejs-templates/webpack 按照它的步骤一步一步来 $ npm i ...
- [原创] zabbix学习之旅五:如何快速搭建一个报警系统
通过之前的文章,我们已搭建好zabbix server.agent和mail客户端,现在万事俱备,只差在server的界面中进行相应配置,即可快速搭建一个报警系统.总的来说,快速搭建一个报警系统的顺序 ...
- 快速搭建一个本地的FTP服务器
快速搭建一个本地的FTP服务器 如果需要开发FTP文件上传下载功能,那么需要在本机上搭建一个本地FTP服务器,方便调试. 第一步:配置IIS Web服务器 1.1 控制面板中找到"程序& ...
- 快速搭建一个Spring Boot + MyBatis的开发框架
前言:Spring Boot的自动化配置确实非常强大,为了方便大家把项目迁移到Spring Boot,特意总结了一下如何快速搭建一个Spring Boot + MyBatis的简易文档,下面是简单的步 ...
- 快速搭建一个Quartz定时任务【转载,好文 ,值得收藏,亲身试用 效果不错】
Quartz.NET 入门 概述 Quartz.NET是一个开源的作业调度框架,非常适合在平时的工作中,定时轮询数据库同步,定时邮件通知,定时处理数据等. Quartz.NET允许开发人员根据时间间隔 ...
随机推荐
- Django ORM中,如何使用Count来关联对象的子集数量
示例models 解决方法 有时候,我们想要获取一个对象关联关系的数量,但是我们不要所有的关联对象,我们只想要符合规则的那些关联对象的数量. 示例models # models.py from dja ...
- Flask上下文管理源码--亲自解析一下
前戏 偏函数 def index(a,b): return a+b # 原来的调用方法 # ret=index(1,2) # print(ret) # 偏函数--帮助开发者自动传递参数 import ...
- Pygal之世界地图绘制from pygal.i18n import COUNTRIES 报错的解决办法
在<Python编程:从入门到实践>书中的一个项目用到pygal.i18n获取国别码, 问题描述: 在学习<python编程:从入门到精通>的pygal绘制世界地图时,遇到了这 ...
- select2 api参数的文档
具体参数可以参考一下: 参数 类型 描述 Width 字符串 控制 宽度 样式属性的Select2容器div minimumInputLength int 最小数量的字符 maximumInputLe ...
- matplotlib坐标轴设置-【老鱼学matplotlib】
我们可以对坐标轴进行设置,设置坐标轴的范围,设置坐标轴上的文字描述等. 基本用法 例如: import numpy as np import pandas as pd import matplotli ...
- C++运算符重载——类型转换
类型转换函数能够实现把一个类 类型 转换成 基本数据类型(int.float.double.char等) 或者 另一个类 类型. 其定义形式如下,注意不能有返回值,不能有参数,只能返回要转换的数据类型 ...
- 业务线--node中间层做一个透传的项目
1,node中间层总结 1,ejs引入vue的js,路由层(直接透传,自定义行的),比较浅层的一层 中间件的引入 ? ) { // 与rd约定,接口成功返回code===0,其余为失败 console ...
- 【java】-- 多线程快速入门
1.什么是进程?什么是线程?两者区别? 1.每个正在系统上运行的程序都是一个进程,每个进程包含一到多个线程,多线程处理就是允许一个进程中在同一时刻执行多个任务. 2.线程是一组指令的集合,或者是程序的 ...
- cmd应用基础 扫盲教程
cmd是什么? 对于程序员而言,cmd命令提示符是windows操作系统下一个比较重要的工具.对于程序员而言,为了追求更高的效率而抛弃花俏的界面已然是意见很常见的行为,截止到目前的,全世界仍有大量的服 ...
- TCP/IP协议、HTTP协议、SOCKET通讯详解
1.TCP连接TCP(Transmission Control Protocol) 传输控制协议.TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握确认建立一个连接.位码即tcp标志位 ...