基于腾讯云搭建直播系统及空间直播问题定位

LogicPulseMaster
• 阅读 165

直播最近很火爆,QQ空间推出了直播功能,是基于腾讯云搭建的。基本原理是用户在空间发起直播时,空间后台调用腾讯云的api创建直播频道(房间),终端通过rtmp协议把视频流推送到腾讯云;访客观看视频时通过hls协议从腾讯云实时拉取视频。

RTMP:Real Time Messaging Protocol(实时消息传送协议协议)是Adobe Systems公司为Flash Player和服务器之间音频,视频和数据传输开发的私有协议,adobe目前提供了一个并不完整的rtmp specification给大众使用;

HLS:HTTP Live Streaming(HLS)是苹果公司(Apple Inc.)实现的基于HTTP的流媒体传输协议,可实现流媒体的直播和点播。

1、搭建一套直播系统

一、申请腾讯云直播服务

https://console.qcloud.com/live

开通后有10G的免费试用流量,可以够玩一下的了。

二、创建直播频道

基于腾讯云搭建直播系统及空间直播问题定位

基于腾讯云搭建直播系统及空间直播问题定位

创建完成后,有两个地址:

1、推流地址:

rtmp://2804.livepush.myqcloud.com/live/2804_736409db135711e6b91fa4dcbef5e35a?bizid=2804

2、播放地址:

http://2804.liveplay.myqcloud.com/2804_736409db135711e6b91fa4dcbef5e35a.m3u8

三、进行推流

这里使用ffmpeg进行模拟推流,就是把一个mp4文件流化、推送到腾讯云

这里ffmpeg的下载地址就不贴了

ffmpeg -re -i D:\12_live\55.mp4 -c copy -f flv rtmp://2804.livepush.myqcloud.com/live/2804_736409db135711e6b91fa4dcbef5e35a?bizid=2804

四、播放

这里使用vlc进行播放。Vlc是一个功能强大的开源播放器。可能接收rtsp、hls、rtp、udp等多种协议的网络视频播放

基于腾讯云搭建直播系统及空间直播问题定位

2、空间直播问题简单定位

由于本人主要负责空间分享业务。这里主要讲直播再分享到空间后的定位。

怎么样分享到空间?这里略去,下载个最新版的空间独立版试一下就知道了。

说到定位后台定位问题,这就要借助龙哥功能强大的QTP工具了。

1、拉取分享列表

http://ugc.isd.com/QTP/index.php?dstjcefile=%2F%2FQzoneMobileFramework_proj%2Fjce%2Fwebapps%2Fmobile_feeds_protocol.jce%2Fmobile_detail_req&ticket=F7635C13C00B4DF4C6B887D4D6B3C4909FDA7A57AB83D7C708425E4E3647CF94B45CFE6B6A3DC31443DE4684B002A02881F2A2FAFCC265E9FB1951AA5ADC231036EB2F9CC39AA3A6809CD51E43C67B302556181F5F43856770F63168434550EEEB86AC15AE77848A865F3AE875E0BE30B6024C740B74538D8018C66221FF32E2627FB6D32D0AF97BB19A96049FF7601BAC4382CF144340208954974C5F8438A3FB67290C22C48F01BC4EFD289FAC9D081129D7D918A12C29FEECF5602568028525E577E316CE1C814B09A7C503241537045319194CFAAC91229C24122191DCD9475D9B23076E1D72F19736FA93193A4F41338A32875EFC441D43B4B79EBD8318FEE2A554D3B49BCD05AF8B16DB4E6E4185CF0A815264308F3584D58D783951C31C6C78F927EA9192A5841DC92ACECFD2&loginParam=disposed&length=32&lengh=32&sessionKey=F7635C13C00B4DF4C6B887D4D6B3C4909FDA7A57AB83D7C708425E4E3647CF94B45CFE6B6A3DC31443DE4684B002A02881F2A2FAFCC265E9FB1951AA5ADC231036EB2F9CC39AA3A6809CD51E43C67B302556181F5F43856770F63168434550EEEB86AC15AE77848A865F3AE875E0BE30B6024C740B74538D8018C66221FF32E2627FB6D32D0AF97BB19A96049FF7601B744F4F1451E36E32

基于腾讯云搭建直播系统及空间直播问题定位

这里关键是找到一个“live_roomid”

2、拉取房间信息

http://ugc.isd.com/QTP/index.php?dstjcefile=%2F%2Fqzone_liveshow_jce.jce%2FGetRoomInfoReq

基于腾讯云搭建直播系统及空间直播问题定位

直播地址:

http://2377.liveplay.myqcloud.com/2377_831def3912bb11e6b91fa4dcbef5e35a.m3u8

点播地址:

http://200007218.vod.myqcloud.com/200007218_c2e7c0859f2848cca22883c4f3ef3a2c.f0.mp4

空间直播支持回看功能,观看直播用最上面的地址,直播结束后,如果要观看点播则用下面的那个地址。

正常情况下,把上面两个地址中的一个拷贝到vlc中,就可以观看。如果播放不了,通过fiddler进行抓包分析

3、HLS协议

基于腾讯云搭建直播系统及空间直播问题定位

EXTM3U m3u文件头,必须放在第一行

EXT-X-MEDIA-SEQUENCE 第一个TS分片的序列号

EXT-X-TARGETDURATION 每个分片TS的最大的时长

EXT-X-ALLOW-CACHE 是否允许cache

EXT-X-ENDLIST m3u8文件结束符

EXTINF extra info,分片TS的信息,如时长,带宽等

点赞
收藏
评论区
推荐文章
blmius blmius
4年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
美凌格栋栋酱 美凌格栋栋酱
7个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
Peter20 Peter20
4年前
mysql中like用法
like的通配符有两种%(百分号):代表零个、一个或者多个字符。\(下划线):代表一个数字或者字符。1\.name以"李"开头wherenamelike'李%'2\.name中包含"云",“云”可以在任何位置wherenamelike'%云%'3\.第二个和第三个字符是0的值wheresalarylike'\00%'4\
Wesley13 Wesley13
3年前
FLV文件格式
1.        FLV文件对齐方式FLV文件以大端对齐方式存放多字节整型。如存放数字无符号16位的数字300(0x012C),那么在FLV文件中存放的顺序是:|0x01|0x2C|。如果是无符号32位数字300(0x0000012C),那么在FLV文件中的存放顺序是:|0x00|0x00|0x00|0x01|0x2C。2.  
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
PHP创建多级树型结构
<!lang:php<?php$areaarray(array('id'1,'pid'0,'name''中国'),array('id'5,'pid'0,'name''美国'),array('id'2,'pid'1,'name''吉林'),array('id'4,'pid'2,'n
Wesley13 Wesley13
3年前
Java日期时间API系列36
  十二时辰,古代劳动人民把一昼夜划分成十二个时段,每一个时段叫一个时辰。二十四小时和十二时辰对照表:时辰时间24时制子时深夜11:00凌晨01:0023:0001:00丑时上午01:00上午03:0001:0003:00寅时上午03:00上午0
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
一朵云 一朵云
2年前
Python进阶者 Python进阶者
1年前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这