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

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

作者头像
程序员欣宸
发布于 2023-03-27 02:11:27
发布于 2023-03-27 02:11:27
1.3K00
代码可运行
举报
文章被收录于专栏:实战docker实战docker
运行总次数:0
代码可运行

欢迎访问我的GitHub

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

本篇概览

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

部署录制节点

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

部署源站

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

部署转推节点

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

验证:FFmpeg推流到转推节点

  • 推流命令如下,ffmpeg和sample.mp4文件的位置请自行调整
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
./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
代码运行次数:0
运行
AI代码解释
复制
:~# 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,如有侵权请联系 cloudcommunity@tencent.com 删除

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

如有侵权,请联系 cloudcommunity@tencent.com 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Golang流媒体实战之一:体验开源项目lal
欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 关于《Golang流媒体实战》 因为工作需要,开始了流媒体开发学习,于是打算选择一个Go版本的开源流媒体服务器作为学习方向 lal是个不错的开源项目:项目活跃、功能齐全、有详细的中文资料,因此,就选择了它 仓库地址:https://github.com/q191201771/lal 文档地址:https://pengrl.com/lal/#/ 《Golang
程序员欣宸
2023/03/26
1.8K0
Golang流媒体实战之一:体验开源项目lal
利用Simple-RTMP-Server搭建RTMP和HLS直播服务(上)
1、推流地址:rtmp://192.168.43.118:1935/live/livestream
LiveVideoStack
2021/09/02
3.1K0
利用Simple-RTMP-Server搭建RTMP和HLS直播服务(上)
ffmpeg推流到流媒体服务器
流媒体服务器 流媒体服务器接管了和用户交互的一部分操作,后端通过ffmpeg推流到流媒体服务器 smart-rtmp地址:https://gitee.com/mirrors/smart_rtmpd?
sofu456
2021/02/02
3.7K0
FFmpeg流媒体处理-收流与推流
本文为作者原创,转载请注明出处:https://www.cnblogs.com/leisure_chn/p/10623968.html
叶余
2019/04/19
10.5K1
FFmpeg流媒体处理-收流与推流
Golang流媒体实战之四:lalserver的启动源码阅读
欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 《Golang流媒体实战》系列的链接 体验开源项目lal 回源 转推和录制 本篇概览 要想深入了解lalserver,除了前面几篇文章的使用,还必须读源码,这里就从最基本的启动开始,再逐步延伸到深入了解各核心功能 本次源码阅读对应的lal代码仓库在这里:https://github.com/q191201771/lal 分支用的是master,截止目前的comm
程序员欣宸
2023/04/03
7270
SRS(Simple Realtime Server) 开源直播/双录服务器
SRS(Simple Realtime Server) 是一个纯 C++ 编写的高性能开源流媒体服务器,目标是打造简单、高效、易用、支持多协议的直播服务系统。自 2013 年开源以来,已成为国内外广泛使用的 RTMP/WebRTC 服务端方案之一。
井九
2025/07/11
1860
SRS(Simple Realtime Server) 开源直播/双录服务器
国产开源流媒体SRS4.0对视频监控GB28181的支持
1. SRS最大的特点就是简单,表现在代码架构简单,实现简单,部署简单,运维简单;
潇湘落木
2020/11/12
8.2K1
国产开源流媒体SRS4.0对视频监控GB28181的支持
Golang流媒体实战之七:hls拉流服务源码阅读
欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本篇概览 本文是《Golang流媒体实战》系列的第七篇,继续学习一个重要且通用的知识点:hls拉流 在《体验开源项目lal》一文中,咱们先是用rtmp协议推流,然后就行了拉流操作,尽管只用rtmp推流,然而拉流的时候却可以使用多种协议:rtmp、flv、hls,这就有意思了,想必lal在处理推流数据时有特殊处理吧,所以才能用各种协议来拉流 为了弄明白其中原因,本
程序员欣宸
2023/04/24
1.4K0
Golang流媒体实战之七:hls拉流服务源码阅读
开源流媒体服务器SRS学习笔记(1) - 安装、推流、拉流
SRS(Simple RTMP Server) 是国人写的一款非常优秀的开源流媒体服务器软件,可用于直播/录播/视频客服等多种场景,其定位是运营级的互联网直播服务器集群。
菩提树下的杨过
2019/09/12
11.5K0
Golang流媒体实战之五:lal推流服务源码阅读
欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 《Golang流媒体实战》系列的链接 体验开源项目lal 回源 转推和录制 lalserver的启动源码阅读 准备工作 本文要学习的是lalserver处理rtmp推流的功能代码,因此必须要对rtmp协议有所了解,至少要知道握手、chunk、message、messageType、amf0命令的基本概念,有关rtmp协议的资料在网上已经很丰富了,这里就不展开了,
程序员欣宸
2023/04/09
8970
Golang流媒体实战之五:lal推流服务源码阅读
工具使用:利用SRS和FFmpeg搭建流媒体直播和点播系统
最近解决一些摄像头上云问题,由于自研播放器有时存在一些播放问题,按照音视频常见问题分析和解决:延时和抖动这篇文章说的定位问题思路,我决定搭建一些RTMP流媒体服务器,供测试用标准播放器如VLC交叉验证。之所以存在这么多奇怪的问题,是因为接上来的摄像头或者平台总是存在一些私有码流或者码流格式不规范导致。下面简单说下RTMP服务器搭建和测试方法,包括FMS和SRS在win和linux下的搭建方法。
潇湘落木
2020/11/12
6K0
工具使用:利用SRS和FFmpeg搭建流媒体直播和点播系统
SRS6.0: 七年长跑,全面支持H.265
经过七年的酝酿和开发,SRS在6.0中终于正式支持了HEVC(H.265),几乎全面支持,包括RTMP、FLV、SRT、TS、HLS、DASH、GB28181、WebRTC(Safari)、DVR
Winlin
2023/04/02
3.1K0
SRS6.0: 七年长跑,全面支持H.265
SRS-开源流媒体服务器
SRS定位是运营级的互联网直播服务器集群,追求更好的概念完整性和最简单实现的代码。SRS提供了丰富的接入方案将RTMP流接入SRS,
爱撸猫的杰
2019/03/28
28.8K0
SRS-开源流媒体服务器
JavaCV推流实战(MP4文件)
本篇概览 自己的mp4文件,如何让更多的人远程播放?如下图所示: 这里简单解释一下上图的功能: 部署开源流媒体服务器SRS 开发名为PushMp4的java应用,该应用会读取本机磁盘上的Mp4文件,读取每一帧,推送到SRS上 每个想看视频的人,就在自己电脑上用流媒体播放软件(例如VLC)连接SRS,播放PushMp4推上来的视频 今天咱们就来完成上图中的实战,整个过程分为以下步骤: 环境信息 准备MP4文件 用docker部署SRS java应用开发和运行 VLC播放 环境信息 本次实战,我这边涉及
程序员欣宸
2021/12/07
1.5K2
JavaCV推流实战(MP4文件)
【FFmpeg】使用 ffmpeg 命令实现直播推拉流 ( 推流和拉流简介 | 流媒体服务器搭建 | 使用 ffmpeg 命令进行推流操作 | 使用 ffmpeg/ffplay 命令进行拉流操作 )
流媒体服务器 在 推流 和 拉流 操作中 , 扮演者重要的角色 , 其主要任务 是 将视频 和 音频等多媒体内容进行 编解码 和 传输 ;
韩曙亮
2024/05/10
8.5K0
【FFmpeg】使用 ffmpeg 命令实现直播推拉流 ( 推流和拉流简介 | 流媒体服务器搭建 | 使用 ffmpeg 命令进行推流操作 | 使用 ffmpeg/ffplay 命令进行拉流操作 )
FFmpeg开发笔记(四十八)从0开始搭建直播系统的开源软件架构
​音视频技术的一个主要用途是直播,包括电视直播、电脑直播、手机直播等等,甚至在线课堂、在线问诊、安防监控等应用都属于直播系统的范畴。由于直播系统不仅涉及到音视频数据的编解码,还涉及到音视频数据的实时传输,因此直播领域采用的网络技术标准比较高,实现起来也比一般的WEB系统复杂。
aqi00
2024/08/18
4300
FFmpeg开发笔记(四十八)从0开始搭建直播系统的开源软件架构
OSSRS搭建rtmp推流服务器
文中测试视频:https://pan.baidu.com/s/1Cs9bULQ26zmDjbNqiIyUow 密码:q839
西里国际站
2023/04/18
4.3K0
FFmpeg开发笔记(三十六)Linux环境安装SRS实现视频直播推流
​《FFmpeg开发实战:从零基础到短视频上线》一书在第10章介绍了轻量级流媒体服务器MediaMTX,通过该工具可以测试RTSP/RTMP等流媒体协议的推拉流。不过MediaMTX的功能实在是太简单了,无法应用于真实直播的生产环境,真正能用于生产环境的流媒体服务器还要看SRS或者ZLMediaKit。
aqi00
2024/07/07
6480
FFmpeg开发笔记(三十六)Linux环境安装SRS实现视频直播推流
从零到1搭建流媒体服务器
我在实际开发过程中遇到这样的需求,将摄像头采集的画面信息传输到Linux服务器上,然后传输到windows11端进行播放。基于此需求,所以我们需要在Linux环境下搭建一台类似"中转站"的流媒体服务器,摄像头将采集的数据信息推流到"流媒体服务器",然后windows环境下的播放器从流媒体服务器进行"拉流"。这就是我们常见的推拉流动作。
破晓的历程
2025/04/04
2970
从零到1搭建流媒体服务器
FFmpeg开发笔记(四十一)结合OBS与MediaMTX实现SRT直播推流
​《FFmpeg开发实战:从零基础到短视频上线》一书的“10.2  FFmpeg推流和拉流”提到直播行业存在RTSP和RTMP两种常见的流媒体协议。除此以外,还有于2017年推出的SRT协议,相比常见的RTMP协议,SRT协议具有更低的延迟,并且消除了卡帧、抖动等花屏现象。腾讯视频云已经引入了SRT协议,在实践中取得了良好的视频直播效果。
aqi00
2024/07/27
9820
FFmpeg开发笔记(四十一)结合OBS与MediaMTX实现SRT直播推流
推荐阅读
相关推荐
Golang流媒体实战之一:体验开源项目lal
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验