[feat] lalserver,运行参数中没指定配置文件时,尝试从几个常见位置读取

pull/49/head
q191201771
parent 1224afe201
commit 2625f86edc

@ -19,7 +19,7 @@
---
lal是开源GoLang流媒体项目包含三个主要组成部分
lal是一个开源GoLang流媒体项目包含三个主要组成部分
- lalserver接收客户端推流转发给对应的拉流客户端也即承担直播场景中的源站、CDN边缘分发等角色。类似于`nginx-rtmp-module`、crtmpserver等应用。
- demo一些小应用比如推、拉流客户端压测工具流分析工具调度示例程序等。类似于ffmpeg、ffprobe等应用以及提供给业务方的使用示例。
@ -61,7 +61,7 @@ lal是开源GoLang流媒体项目包含三个主要组成部分
除了lalserver还提供一些基于lal开发的demo比如客户端程序 [《lal/app/demo》](https://github.com/q191201771/lal/blob/master/app/demo/README.md)
<img alt="Live And Live" src="https://pengrl.com/lal/_media/lal_src_fullview_frame.jpeg?date=0117">
<img alt="Live And Live" src="https://pengrl.com/lal/_media/lal_src_fullview_frame.jpeg?date=01172">
发行版本日志:[《CHANGELOG.md》](https://github.com/q191201771/lal/blob/master/CHANGELOG.md)
@ -93,17 +93,9 @@ $./bin/lalserver -c conf/lalserver.conf.json
lalserver详细配置见 [《配置注释文档》](https://github.com/q191201771/lal/blob/master/conf/lalserver.conf.json.brief)
### 源码框架
### 第三方依赖
<br>
简单来说,源码在`pkg/``app/lalserver/``app/demo/`三个目录下。
- `pkg/`存放各package包供本repo的程序以及其他业务方使用
- `app/lalserver`基于lal编写的一个通用流媒体服务器程序入口
- `app/demo/`:存放各种基于`lal/pkg`开发的小程序(小工具),一个子目录是一个程序,详情见各源码文件中头部的说明
目前唯一的第三方依赖我自己写的Go基础库 [github.com/q191201771/naza](https://github.com/q191201771/naza)
我自己写的Go基础库 [github.com/q191201771/naza](https://github.com/q191201771/naza)
### 联系我

@ -11,6 +11,7 @@ package main
import (
"flag"
"fmt"
"github.com/q191201771/naza/pkg/nazalog"
"os"
"path/filepath"
@ -31,18 +32,41 @@ func parseFlag() string {
binInfoFlag := flag.Bool("v", false, "show bin info")
cf := flag.String("c", "", "specify conf file")
flag.Parse()
if *binInfoFlag {
_, _ = fmt.Fprint(os.Stderr, bininfo.StringifyMultiLine())
_, _ = fmt.Fprintln(os.Stderr, base.LALFullInfo)
os.Exit(0)
}
if *cf == "" {
flag.Usage()
_, _ = fmt.Fprintf(os.Stderr, `
// 运行参数中有配置文件,直接返回
if *cf != "" {
return *cf
}
// 运行参数中没有配置文件,尝试从几个默认位置读取
nazalog.Warnf("config file not specify in command line, try to load some common config file in common path.")
defaultConfigFileList := []string{
filepath.FromSlash("lalserver.conf.json"),
filepath.FromSlash("./conf/lalserver.conf.json"),
filepath.FromSlash("../conf/lalserver.conf.json"),
}
for _, dcf := range defaultConfigFileList {
fi, err := os.Stat(dcf)
if err == nil && fi.Size() > 0 && !fi.IsDir() {
nazalog.Warnf("%s exist. using it as config file.", dcf)
return dcf
} else {
nazalog.Warnf("%s not exist.", dcf)
}
}
// 默认位置都没有,退出程序
flag.Usage()
_, _ = fmt.Fprintf(os.Stderr, `
Example:
%s -c %s
`, os.Args[0], filepath.FromSlash("./conf/lalserver.conf.json"))
base.OSExitAndWaitPressIfWindows(1)
}
return *cf
}

Loading…
Cancel
Save