首页 > golang > livego介绍、安装、使用详解
2022
01-03

livego介绍、安装、使用详解

前言

写这篇文章主要是因为希望找到一个简单的方式实现直播功能,在度娘上找到livego(我平时写php和前端的,不懂golang),感觉安装部署都很方便,即使不懂golang的同学,只要有一定Linux和web后端开发知识都能搭建自己的直播服务。但是livego的文档的确比较少,然后对于我这个面向搜索引擎开发的菜鸟来说,连度娘也只找到为数不多的几篇相关博客文章,所以最后只能自己看GitHub的issue和反复测试趟坑,最后打算记录一下自己的趟坑过程也分享一下给各位小伙伴,希望对你们有帮助。

LiveGo

安装和使用非常简单;
纯 Golang 编写,性能高,跨平台;
支持常用的传输协议、文件格式、编码格式;
安装(以编译好的二进制文件为例)

    下载对应的二进制文件,打开这个地址查找自己需要的版本:https://github.com/gwuhaolin/livego/releases
    放到服务器上进行解压
    执行解压出来的livego文件以启动livego服务:./livego
    在启动livego服务后默认会监听以下端口:
    8090端口:用于控制台,通过HTTP请求可查看与控制直播房间的推拉流
    1935端口:用于RTMP推拉流,目前貌似只能通过RTMP方式推流
    7001端口:用于FLV拉流
    7002端口:用于HLS拉流


用法

创建直播房间:

请求:http://你的服务器地址:8090/control/get?room=房间名字(房间名字你自己自定义)
成功响应:{“status”:200,“data”:一段与房间名对应的MD5秘钥}
推流(以PC端的OBS为例):

OBS是开源免费的软件,OBS的下载安装就不介绍了,度娘一大堆,一直狂点下一步就好了,连OBS都不懂安装的人,估计也不会看到这里。OBS前面的设置步骤也不说了,度娘也有很多,而且与技术没太大关系,这里直接说下重点:
在这里插入图片描述

注意:OBS这里填写的“串流秘钥”是刚刚自己定义的房间名喔,不是响应返回的MD5秘钥(这个MD5秘钥是有用的,后面会说到)
拉流(以flv为例,这里使用bilibili开源的flvjs)

复制以下代码,修改代码当中的flv播放地址并保存为html,直接在浏览器打开这个html就能看到直播画面了

<!DOCTYPE html>
<html>
<head>
   <meta charset="UTF-8">
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   <title>直播测试</title>
</head>
<body>
   <!-- 通过CDN直接引入flvjs -->
   <script src="https://cdn.bootcdn.net/ajax/libs/flv.js/1.6.1/flv.min.js"></script>
   <div  style="text-align: center;">
       <video id="liveTest" style="height: 100%;width: 100%;"></video>
   </div>
   <script>
       if (flvjs.isSupported()) {
           flvjs.createPlayer({
               type: 'flv',
               isLive: true,
               url: 'flv拉流直播地址'
           })
           .attachMediaElement(document.getElementById('liveTest'))
           .load()
           .play()
       }
   </script>
</body>
</html>


刚刚提到MD5秘钥是有用的,就是用在拉流的时候,所以上面代码中的flv拉流地址应该为:
http://你的服务器地址:7001/live/刚刚创建房间响应返回的MD5秘钥.flv
注意:拉流播放这里有点小坑,因为这个播放地址在GitHub上面的livego官方README中也是描述错误的,我也是反复测试了几次才发现是用刚刚的MD5秘钥
控制台其他接口:

以下接口我只用过/stat/livestat,其他接口未测试过…所以需要自行测试一下,不知道有没有坑

    查看当前推拉流的房间情况:http://你的服务器地址:8090/stat/livestat
    直播房间拉流开关:http://你的服务器地址:8090/control/pull?&oper=start&app=live&name=房间名字&url=rtmp://你的服务器地址/live/房间名字 oper可传start或stop
    直播房间推流开关:http://你的服务器地址:8090/control/push?&oper=start&app=live&name=房间名字&url=rtmp://你的服务器地址/live/房间名字 oper可传start或stop
    重置直播房间(推测是重新生成channelkey或者停止全部推拉流的):http://你的服务器地址:8090/control/reset?room=房间名字
    删除直播房间:http://你的服务器地址:8090/control/delete?room=房间名字


注意事项


    建议用于控制台的8090端口不要对外放开,防止被外部请求
    直播对带宽的要求真的挺高的,在我技术验证期间,各有一个推拉流的情况下,服务器提升到10M带宽还是有10-20秒的延迟,所以可能直接用各大云厂商的云直播服务更划算,性能也更好,因为如果真正生产环境多人直播时估计除了宽带,对CPU和内存的要求也会大幅提升。
    livego的文档很少很少,然后听说(注意是听说,本人并未详细读过源码)livego的BUG比较多,但本人目前单纯是技术验证,并未应用到任何的测试或生产环境,如果的确需要应用到正式环境的,建议还是要读一读源码

除了livego还能通过nginx的rtmp模块实现直播

本文》有 0 条评论

留下一个回复