srs是一个流媒体集群,支持RTMP/HLS/WebRTC/SRT/GB28181,高效、稳定、易用,简单而快乐。基于c++开发的开源项目。
开源地址:https://github.com/ossrs/srs-docker/tree/dev
根据教程安装完docker 后,启动cmd 或者windows terminal 进入一个srs工作目录。本次进入F:/Docker 目录。执行下命令:
git clone https://gitee.com/winlinvip/srs.oschina.git srs &&
cd srs && git remote set-url origin https://github.com/ossrs/srs.git && git pull
拉取完srs源码后,就可以创建docker了。执行创建docker命令:
docker run -it --name=srs -v `pwd`:/tmp/srs -w /tmp/srs/trunk -p 1935:1935 \
-p 1985:1985 -p 8080:8080 -p 8085:8085 registry.cn-hangzhou.aliyuncs.com/ossrs/srs:dev bash
执行后发现执行失败。问题在于文件映射。"pwd"是linux命令,需要把映射目录写为绝对路径,如下:
docker run -it --name=srs -v F:/Docker/srs:/tmp/srs -w /tmp/srs/trunk -p 1935:1935 \
-p 1985:1985 -p 8080:8080 -p 8085:8085 registry.cn-hangzhou.aliyuncs.com/ossrs/srs:dev bash
命令执行成功,进入docker 容器trunk目录。但是ls后发现,目录时空的,返回上层ls目录还是空的。
问题原因:目录权限问题。大家都知道windows-docker其实就是自启动一个linu虚拟机环境。linux想访问windows当然需要权限设置。
解决办法:其实在docker-setting就可以设置。
删除该docker后重现执行,再次进入容器发现文件已经映射成功。
接下来开始Build SRS in docker:
执行 ./configure 后出现问题:
问题原因:因为我们是windows系统,文件格式是windows格式,而docker属于unix格式。换行标准\r\n。
解决办法:方法1、
vi configure
:set ff
:set fileformat=unix
:wq
方法2、用notepad++ 打开文件修改文档格式:
修改完后继续执行./configure,出现:
问题原因:因为我们是windows系统,文件格式是windows格式,而docker属于unix格式。换行标准\r\n。需要文档格式修改未unix.
需要修改的文件:./trunk/configure ,./trunk/modules/hls-ingester/config ,./trunk/modules/mp4-parser/config ,/trunk/auto/所有.sh文件。
修改完毕后执行./configure 一切顺利。接下来执行make。出现:
问题原因:makefile使用tab来作为separator.如果你使用4个空格就会报错,makefile:n: *** missing separator. Stop,其中n是第几行。
解决办法:根据行号把空格去掉用tab键代替。
接下来继续执行make。出现:
问题原因:“@”是c++特殊标识符,需要转义。
解决办法:文件objs/srs_auto_headers.hpp 里面转义符换行出现问题。把53行起转义符规整。如图:
接下来执行make 顺利编译成功,并看到提示。执行./objs/srs -c conf/srs.conf 就可以启动srs服务了。