Live 七牛云直播

最近的直播行业特别火,各种直播,有时候我也会去 熊猫 TV 上面看看 PDD 的 LOL 直播,在看直播的同时又很好奇他这种直播到底如何实现的,那么今天咱门就一起来探究一下吧。

七牛云直播

七牛在视频直播大爆发时代,推出专为直播平台打造的全球化直播流服务和端到端直播场景解决方案,我选择七牛是因为七牛的文档真心让人看着舒服,通俗易懂。在学习七牛云之前你非常有必要先看看 七牛直播云原理 文档,因为这个文档可能比我解释得更加专业。

申请直播云

首先你得在七牛控制台之中开通 直播空间权限

file

一般申请后会在 3 个工作日内通过审核。

file

创建直播空间

在通过审核之后,你需要创建一个直播空间

file

在创建直播空间的时候,直播的域名得要备案过的域名才行,域名建议使用二级域名。

file

选择专门用来存放直播流的存储空间

file

这里需要你配置一下加速点播的域名,配置也非常简单,到菜单栏中 融合 CDN 新建一个加速域名,类型选择 点播平台

file

这里值得注意的是:新建的加速域名需要等一会才会显示 CNAME 的值,CNAME 值显示出来之后,你再去解析下你的域名

file
file

回到创建直播空间这里,选择我们创建好的加速域名

file

创建完成之后来到直播空间主页面,还需要配置一下 直播推流域名直播播放域名 ,这个很简单和前面配置 CDN 加速 一样,把给出的 域名CNAME 值到域名解析管理后台解析一下。正确配置之后如下图所示

file

创建完成直播空间之后,我们需要到 直播流管理 里面创建一个 直播流 ,直播流创建之后我们会得到 推流地址播放地址 就是所谓的直播地址和播放地址

file

推流 PC 端采用 OBS 安装完成之后填上推流地址,就可以进行推流直播了。

file
file
file

推流也可以用手机推流,所谓手机直播,这个请结合官网给出的 SDK 配置,传送门,到此前面的七牛配置与直播推流已经完毕

观看直播

前面的直播推流配置完成之后,我们需要让用户或者观众看到直播,Let`s go

正常情况下用户观看直播的流程是:登录直播网站 -> 点开直播房间 -> 服务器获取播放地址 -> 用户观看直播,当然流程背后可能做了更多事情,我们就简单的模拟一下登录直播网址然后观看直播。那么就意味着我们需要创建一个 Laravel 项目,然后集成 七牛云直播服务端 SDK
你有必要看一下 服务端 SDK 的使用说明和调用方法

项目和组件都准备就绪之后我们创建一个测试直播的控制器

php artisan make:controller LiveController

控制器内容

<?php

namespace App\Http\Controllers;


use Qiniu\Pili\Client;
use function Qiniu\Pili\HDLPlayURL;
use Qiniu\Pili\Mac;

class LiveController extends Controller
{
    protected $client;

    /**
     * LiveController constructor.
     */
    public function __construct()
    {
        $this->client = new Client(new Mac('xxx', 'xxx'));
    }

    public function index()
    {
        // 选择直播空间,正常项目中可用代码获取,这里测试就直接填写
        $this->client->hub('destiny');
        // 获取 HDL 直播地址,hub 指直播空间,streamkey 指流名称
        $liveurl = \Qiniu\Pili\HDLPlayURL('pili-live-hdl.live.aabvip.com', 'destiny', 'live-stream');

        return view('welcome', compact('liveurl'));
    }
}

这里只用了一个获取播放地址的方法,还有更多的方法你可以查看该 SDK 的 readme,我这里获取的是 HDL 直播地址,常见直播地址如下

  • RTMP:底层基于 TCP,在浏览器端依赖 Flash。
  • HTTP-FLV:基于 HTTP 流式 IO 传输 FLV,依赖浏览器支持播放 FLV。
  • WebSocket-FLV:基于 WebSocket 传输 FLV,依赖浏览器支持播放 FLV。WebSocket 建立在 HTTP 之上,建立WebSocket 连接前还要先建立 HTTP 连接。
  • HLS: Http Live Streaming,苹果提出基于 HTTP 的流媒体传输协议。HTML5 可以直接打开播放。
  • RTP:基于UDP,延迟1秒,浏览器不支持。

常见直播协议延迟与性能数据

传输协议 播放器 延迟 内存 CPU
RTMP Flash 1s 430 M 11 %
HTTP-FLV Video 1s 310 M 4.4 %
HLS Video 20s 205 M 3 %

可以看出在浏览器里做直播,使用 HTTP-FLV 协议是不错的,性能优于 RTMP + Flash,延迟可以做到和 RTMP + Flash 一样甚至更好。下面推荐相应协议的播放插件

  • HLS 协议播放插件推荐 videojs-contrib-hls 这块插件非常多的网站在使用,UI 看着非常漂亮
  • HDL (HTTP-FLV) 协议播放插件推荐 BiliBili-flv.js 这是 B 站开源的 FLV 播放组件,非常不错

引入组件 CDN 之后代码如下

<!doctype html>
<html lang="{{ app()->getLocale() }}">
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Laravel</title>
    <!-- 引入 CDN -->
    <script src="https://cdn.bootcss.com/flv.js/1.3.2/flv.min.js"></script>
</head>
<body>
<!-- Start -->
<video id="videoElement"></video>
</body>
<script>
    if (flvjs.isSupported()) {
        var videoElement = document.getElementById('videoElement');
        var flvPlayer = flvjs.createPlayer({
            type: 'flv',
            url: '{{ $liveurl }}'
        });
        flvPlayer.attachMediaElement(videoElement);
        flvPlayer.load();
        flvPlayer.play();
    }
</script>
<!-- End -->
</html>

播放效果如下

file

赶快照着教程动手做一下吧,那样你会理解得更深入。

我的技术博客:https://aabvip.com/ ,嘿嘿我觉得 UI 还是非常好看的额。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,254评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,875评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,682评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,896评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,015评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,152评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,208评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,962评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,388评论 1 304
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,700评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,867评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,551评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,186评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,901评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,142评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,689评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,757评论 2 351

推荐阅读更多精彩内容