Golang流媒体实战之三:转推和录制
欢迎访问我的GitHub
这里分类和汇总了欣宸的全部原创(含配套源码):github.com/zq2599/blog…
本篇概览
-
本文是《Golang流媒体实战》系列的第三篇,咱们不忙着写代码,继续熟悉开源流媒体服务器lal,今天练习的是流传输过程中两个重要功能:转推和录制
-
关于转推功能,可以从下图了解,FFmpeg推流到转推节点后,转推节点会将该路流推送到录制和源站两个节点,录制节点负责录制flv文件,源站作为媒体源,接受外部拉流(源站->拉流->VLC这个链路已在前文《Golang流媒体实战之二:回源》详细说明)
-
如果把FFmpeg换成主播,VLC换成观众,是不是有直播内味了...
-
今天要实战的上图的绿色部分,至于蓝色部分已在前文《Golang流媒体实战之二:回源》有详细说明,就不赘述了
-
下图是接下来要实战的部署情况,省略掉拉流节点后,只要准备三台电脑即可完成本次实战:MacBook、阿里云、Linux
部署录制节点
- 首先启动的是录制节点,这个部署在阿里云服务器上
- 打开配置文件lalserver.conf.json,找到record节点
"record": {
"enable_flv": false,
"flv_out_path": "./lal_record/flv/",
"enable_mpegts": false,
"mpegts_out_path": "./lal_record/mpegts"
},
- 本次实战暂定用flv格式录制,于是将enable_flv的值改为true
"record": {
"enable_flv": true,
"flv_out_path": "./lal_record/flv/",
"enable_mpegts": false,
"mpegts_out_path": "./lal_record/mpegts"
},
- 将修改后的配置存盘,执行以下命令启动
./bin/lalserver -c conf/lalserver.conf.json
- 录制节点就绪了,接下来是源站
部署源站
- 这个没什么好说的,在源站电脑上,使用默认配置文件启动lal即可
部署转推节点
- 通过前面的部署图可知,转推节点要将收到的流转推到录制节点和源站,因此要修改lal的配置文件lalserver.conf.json,找到relay_push节点,原始内容如下
"relay_push": {
"enable": false,
"addr_list":[
]
},
- 修改relay_push节点,将enable设置为true,再把录制节点和源站的地址都填进去,端口都保持1935(rtmp端口)
"relay_push": {
"enable": true,
"addr_list":[
"录制节点ip:1935",
"源站节点ip:1935"
]
},
- 配置完成后,执行以下命令启动转推节点
./bin/lalserver -c conf/lalserver.conf.json
- 现在三个lal节点都启动了,接下来验证它们能否正常工作
验证:FFmpeg推流到转推节点
- 推流命令如下,ffmpeg和sample.mp4文件的位置请自行调整
./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
:~# 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的强大了,接下来的系列文章,咱们会通过编码去畅游流媒体的精彩世界!
转载自:https://juejin.cn/post/7268594193933090879