首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Golang流媒体实战之三:转推和录制

Golang流媒体实战之三:转推和录制

作者头像
程序员欣宸
发布2023-03-27 10:11:27
发布2023-03-27 10:11:27
1.7K0
举报
文章被收录于专栏:实战docker实战docker

欢迎访问我的GitHub

这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos

本篇概览

  • 本文是《Golang流媒体实战》系列的第三篇,咱们不忙着写代码,继续熟悉开源流媒体服务器lal,今天练习的是流传输过程中两个重要功能:转推和录制
  • 关于转推功能,可以从下图了解,FFmpeg推流到转推节点后,转推节点会将该路流推送到录制和源站两个节点,录制节点负责录制flv文件,源站作为媒体源,接受外部拉流(源站->拉流->VLC这个链路已在前文《Golang流媒体实战之二:回源》详细说明)
  • 如果把FFmpeg换成主播,VLC换成观众,是不是有直播内味了…
  • 今天要实战的上图的绿色部分,至于蓝色部分已在前文《Golang流媒体实战之二:回源》有详细说明,就不赘述了
  • 下图是接下来要实战的部署情况,省略掉拉流节点后,只要准备三台电脑即可完成本次实战:MacBook、阿**、Linux

部署录制节点

  • 首先启动的是录制节点,这个部署在阿**服务器上
  • 打开配置文件lalserver.conf.json,找到record节点
代码语言:javascript
复制
  "record": {
    "enable_flv": false,
    "flv_out_path": "./lal_record/flv/",
    "enable_mpegts": false,
    "mpegts_out_path": "./lal_record/mpegts"
  },
  • 本次实战暂定用flv格式录制,于是将enable_flv的值改为true
代码语言:javascript
复制
  "record": {
    "enable_flv": true,
    "flv_out_path": "./lal_record/flv/",
    "enable_mpegts": false,
    "mpegts_out_path": "./lal_record/mpegts"
  },
  • 将修改后的配置存盘,执行以下命令启动
代码语言:javascript
复制
./bin/lalserver -c conf/lalserver.conf.json
  • 录制节点就绪了,接下来是源站

部署源站

  • 这个没什么好说的,在源站电脑上,使用默认配置文件启动lal即可

部署转推节点

  • 通过前面的部署图可知,转推节点要将收到的流转推到录制节点和源站,因此要修改lal的配置文件lalserver.conf.json,找到relay_push节点,原始内容如下
代码语言:javascript
复制
  "relay_push": {
    "enable": false,
    "addr_list":[
    ]
  },
  • 修改relay_push节点,将enable设置为true,再把录制节点和源站的地址都填进去,端口都保持1935(rtmp端口)
代码语言:javascript
复制
  "relay_push": {
    "enable": true,
    "addr_list":[
    	"录制节点ip:1935",
    	"源站节点ip:1935"
    ]
  },
  • 配置完成后,执行以下命令启动转推节点
代码语言:javascript
复制
./bin/lalserver -c conf/lalserver.conf.json
  • 现在三个lal节点都启动了,接下来验证它们能否正常工作

验证:FFmpeg推流到转推节点

  • 推流命令如下,ffmpeg和sample.mp4文件的位置请自行调整
代码语言:javascript
复制
./ffmpeg \
-re \
-stream_loop -1 \
-i ./sample.mp4 \
-c copy \
-f flv \
'rtmp://127.0.0.1:1935/live/test110'
  • 推流成功后,先用VLC直接从源站拉流试试,如下图,能正常播放,证明转推到源站没有问题
  • 然后用ctrl+c结束FFmpeg推流,这样录制节点就会完成录制
  • 登录录制节点,查看lal的文件夹,如下,可见lal_record/flv目录下存放着录制好的flv文件,名为test110-1679800510.flv
代码语言:javascript
复制
:~# tree lal
lal
├── bin
│   └── lalserver
├── conf
│   └── lalserver.conf.json
├── lal_record
│   ├── flv
│   │   └── test110-1679800510.flv
│   └── hls
└── logs
    └── lalserver.log
  • 将上述test110-1679800510.flv文件从录制节点下载到本地,分别用IINA、ffplay、VLC播放,结果IINA和ffplay播放正常,而VLC出现黑屏或者音画不同步,稍微拖动一下进度条后又播放正常了
  • 至此,lal的转推和录制能力就体验完毕了,这还没有写代码,凭借几行配置就已经体会到lal的强大了,接下来的系列文章,咱们会通过编码去畅游流媒体的精彩世界!
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-03-26,如有侵权请联系 [email protected] 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 [email protected] 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 欢迎访问我的GitHub
  • 本篇概览
  • 部署录制节点
  • 部署源站
  • 部署转推节点
  • 验证:FFmpeg推流到转推节点
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档