视频直播LiveGo测试环境搭建

Livego是一款简单高效的直播服务器:

  • 安装和使用非常简单;
  • 纯 Golang 编写,性能高,跨平台;
  • 支持常用的传输协议、文件格式、编码格式;  

支持的协议包括

  • RTMP
  • AMF
  • HLS
  • HTTP-FLV

1、服务端环境搭建。

代码路径:GitHub - gwuhaolin/livego: live video streaming server in golang

如果不想搭建go环境,想直接看看效果的,也可以直接在这里下载exe程序进行测试。版本号是0.0.15版本,2021年2月3日最新版本。

路径:[传送门]

下载exe后,直接通过双击运行即可。(go语言的强大之处,不需要安装任何运行环境)如下图所示:

2、推流端环境准备。

准备ffmpeg,使用命令行进行推流。如果没有ffmpeg.exe的话,可以在下面链接下载(传送门)

命令行如下:

ffmpeg -re -i test.mp4 -c copy -f flv -y rtmp://localhost:1935/live/[channelkey]      

其中channelKey通过livego的api获取,API接口为:http://localhost:8090/control/get?room=movie 。其中movie是自定义的room名称,接口会返回

{"status":200,"data":"rfBd56ti2SMtYvSgD5xAV0YU99zampta7Z7S575KLkIZ9PYk"}

其中rfBd56ti2SMtYvSgD5xAV0YU99zampta7Z7S575KLkIZ9PYk就是我们需要使用的channelkey。

在推流的过程中,可以使用http://127.0.0.1:8090/stat/livestat查看服务端的状态信息。

3、拉流端准备。

(1)VLC Player

         使用VLC Player可以接收播放rtmp协议的视频流。具体操作方法不再接收,直接打开网络串流,输入“rtmp://localhost:1935/live/movie”,播放接口(先推流,后拉流)。

(2)使用video.js方式播放hls格式媒体流【Demo传送门

         核心代码如下:

<video id="myVideo" class="video-js vjs-default-skin vjs-big-play-centered" controls preload="auto" data-setup='{}' style='width: 100%;height: auto'>
       <source id="source" src="http://localhost:7002/live/movie.m3u8" type="application/x-mpegURL"></source>
</video>

(3)使用flv.js方式播放flv格式媒体流【Demo传送门

      核心代码如下:

<video name="videoElement" class="centeredVideo" controls="" autoplay="" src="http://localhost:7001/live/movie.flv" muted>
           Your browser is too old which doesn't support HTML5 video.
</video>

        按照如上方法,亲测可以正常使用,至于性能方面,未做测试。之后有时间再研究。

### LiveGo 实现 FLV 格式推流或播放的技术方案 #### 1. 使用 FFmpeg 进行 FLV 推流到 LiveGo 通过 `ffmpeg` 工具可以轻松实现将本地的 `.flv` 文件作为输入源并推送至 LiveGo 的 RTMP 流服务器。以下是具体的命令示例: ```bash ffmpeg -re -i test.flv -vcodec copy -acodec copy -f flv rtmp://<server_ip>:1935/<application_name>/<stream_key> ``` 此命令中的参数解释如下: - `-re`: 控制读取速度以匹配原始文件的时间戳,从而模拟实时流。 - `-i test.flv`: 输入文件路径为 `test.flv`。 - `-vcodec copy`: 不重新编码视频部分,直接复制原数据。 - `-acodec copy`: 同样不重新编码音频部分。 - `-f flv`: 输出格式指定为 FLV。 - `rtmp://<server_ip>:1935/<application_name>/<stream_key>`: 替换 `<server_ip>`, `<application_name>`, 和 `<stream_key>` 来适配实际环境。 上述操作利用了 FFmpeg 对多种多媒体容器的支持以及高效的转码能力[^1]。 #### 2. LiveGo 支持的协议与 FLV 处理方式 LiveGo 是一款基于 Golang 开发的高度可扩展直播流媒体框架,能够很好地兼容 RTMP 协议及其衍生形式(如 HLS、HTTP-FLV)。对于 FLV 格式的处理主要依赖于底层解析库完成封装/解封工作,在接收到客户端上传的数据包之后会自动识别其结构特征进而决定如何存储或者转发给其他订阅者[^4]。 当涉及到具体业务逻辑定制化需求时,则可以通过修改源代码来增强现有功能集;比如增加额外元信息记录字段、调整缓冲策略等等均有可能提升用户体验质量的同时降低带宽消耗成本等问题发生几率[^3]。 #### 3. 自定义开发流程概述 如果希望进一步深入理解整个过程的话还可以尝试自己动手编写一段简单的程序用于演示目的——这里给出一个基本思路供参考: 假设我们已经有了运行正常的 SRS 或类似的流媒体服务端实例可供测试连接成功与否情况之下继续往下走下一步骤之前先确认好版本号是否满足最低要求限制条件再按照官方文档指引安装必要的依赖项最后执行构建动作得到最终产物即可投入使用啦! 当然也可以考虑采用第三方开源项目成果快速搭建原型验证可行性后再逐步迭代完善细节直至达到预期目标为止哦~ ```go package main import ( "fmt" ) func main() { fmt.Println("这是一个关于如何使用 GoLang 构建基础版 RTMP Server 的例子") } ``` 以上仅为示意性质的小型脚本片段并不代表完整的解决方案还需要更多努力才能达成真正的生产级别应用标准哟😊 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值