RTMP推流平台EasyDSS程序以服务运行时如何转化绝对路径?

拟墨画扇 提交于 2021-02-20 11:02:37

Web无插件直播点播平台EasyDSS有两种运行模式,一种是以可执行程序直接运行,另外一种是以服务运行。一般在生产环境下,多会采用以服务的方式进行运行。

但是在以服务运行时,在编程中对于路径的处理需要特别处理。比如在以“./config.toml ”代表配置文件路径的情况下,如果直接运行可执行程序,就能够找到正确的路径。“./ ”代表当前路径。但以服务运行,则无法找到正确的路径。因此如果以服务运行,当前路径在不同的操作系统下就为不同的路径。

在 Windows 操作系统下,如果程序以服务运行,当前路径在 C:\Windows\System32 中。
在 Linux 操作系统中,如果以服务运行,当前路径在 / 中。

即如果以服务运行,对于 “./config.toml”,在 Windows 操作系统下,就会在 C:\Windows\System32 查找,因此不会查找到。

所以在代码中对于此种路径进行编码优化,具体方式如下:

//GetRealPath 判断传递的是否是相对路径,返回真实路径
func GetRealPath(path string) string {
   //如果是绝对路径
   if filepath.IsAbs(path) {
      return FormatPath(path)
   }
   return FormatPath(filepath.Join(CWD(), path))
}

//FormatPath 格式化地址格式
func FormatPath(path string) string {
   return strings.Replace(path, "\\", "/", -1)
}

// 获取当前工作目录
func CWD() string {
   path, err := os.Executable()
   if err != nil {
      return ""
   }
   return filepath.Dir(path)
}

GetRealPath 就是将“./”这种路径转换为绝对路径的方法。对于EasyDSS中绝对路径的需求,是为了无论从外部还是内部访问都可以通过绝对路径找到该文件夹,在EasyDSS做开发调用时,该方式十分可靠。

EasyDSS提供了丰富的API接口供大家调用,在测试版本中也可以自行进行二次开发,因此大家有需求欢迎联系我们了解,更多视频相关解决方案,欢迎关注我们或者访问TSINGSEE青犀视频官方网站。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!