前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Golang流媒体实战之四:lalserver的启动源码阅读

Golang流媒体实战之四:lalserver的启动源码阅读

作者头像
程序员欣宸
发布2023-04-03 08:51:48
5420
发布2023-04-03 08:51:48
举报
文章被收录于专栏:实战docker实战docker

欢迎访问我的GitHub

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

《Golang流媒体实战》系列的链接

  1. 体验开源项目lal
  2. 回源
  3. 转推和录制

本篇概览

  • 要想深入了解lalserver,除了前面几篇文章的使用,还必须读源码,这里就从最基本的启动开始,再逐步延伸到深入了解各核心功能
  • 本次源码阅读对应的lal代码仓库在这里:https://github.com/q191201771/lal
  • 分支用的是master,截止目前的commitID是e3995bc

入口

  • lalserver的启动代码在lal/app/lalserver/main.go,如下,可见启动很简单,分为三步:拿配置 -> 创建ServerManager -> 执行RunLoop
代码语言:javascript
复制
func main() {
	defer nazalog.Sync()

	confFilename := parseFlag()
	lals := logic.NewLalServer(func(option *logic.Option) {
		option.ConfFilename = confFilename
	})
	err := lals.RunLoop()
	nazalog.Infof("server manager done. err=%+v", err)
}

创建ServerManager

  • 启动后首先做的事情是创建ServerManager对象,代码在server_manager__.go#NewServerManager,里面主要做了这些事情
  • 创建ServerManager
  • 创建GroupManager(每个流都有自己的group)
  • 加载配置文件
  • 根据配置文件做各类具体的设置,以及创建对象,主要有以下这些
  • 设置hls文件是否用内存存取的标志
  • 如果已经开启了flv录制功能,就创建对应的文件存放目录
  • 如果已经开始了mpge格式的ts录制,就创建对应的文件存放目录
  • 添加各种事件的回调
  • 分别检查rtmp、http、rtsp、api等开关是否打开,如果打开了就创建对应的server对象(例如rtmpServer)
  • 如果开启性能监控,就创建pprof的server
  • 鉴权服务
  • NewServerManager完成了,意味着根据配置,该创建的对象已经创建好了,可以执行一些初始化相关的设置了(例如启动rtmp server的监听),这些工作是在server_manager__.go#RunLoop方法中完成的

RunLoop

  • 继续看server_manager__.go#RunLoop方法,代码有点多就不贴出来了,简单说下里面会做这些事情
  • 接受系统的信号量(进程退出)
  • 性能监控pprof
  • 启动http、rtsp、rtmp等服务的server
  • api的路由配置
  • 1秒一次的定时器,负责:检查退出的channel信号,关闭空闲的group(每个app+流名的组合都有自己的group)
  • 至此,启动部分就看过了,简单的代码,清晰的逻辑,为咱们的lalserver深入学习之旅开了好头,接下来要看的就是流媒体处理的源码了,从rtmp推流开始

你不孤单,欣宸原创一路相伴

  1. Java系列
  2. Spring系列
  3. Docker系列
  4. kubernetes系列
  5. 数据库+中间件系列
  6. DevOps系列
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-04-02,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 欢迎访问我的GitHub
  • 《Golang流媒体实战》系列的链接
  • 本篇概览
  • 入口
  • 创建ServerManager
  • RunLoop
  • 你不孤单,欣宸原创一路相伴
相关产品与服务
应用性能监控
应用性能监控(Application Performance Management,APM)是一款应用性能管理平台,基于实时多语言应用探针全量采集技术,为您提供分布式性能分析和故障自检能力。APM 协助您在复杂的业务系统里快速定位性能问题,降低 MTTR(平均故障恢复时间),实时了解并追踪应用性能,提升用户体验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档