The docker images for SRS.
Run SRS in docker by:
docker run -p 1935:1935 -p 1985:1985 -p 8080:8080 ossrs/srs:3
After SRS is running, you can:
- Publish stream to SRS by
ffmpeg -re -i doc/source.200kbps.768x320.flv -c copy -f flv rtmp://127.0.0.1/live/livestream
- Play stream from SRS by
ffmpeg -f flv -i rtmp://127.0.0.1/live/livestream -f flv -y /dev/null
- Access the console by http://127.0.0.1:1985/console
The env of docker is bellow:
- config file: /usr/local/srs/conf/srs.conf
- log file: /usr/local/srs/objs/srs.log
To overwrite the config by /path/of/yours.conf
and gather log to /path/of/yours.log
:
docker run -p 1935:1935 -p 1985:1985 -p 8080:8080 \
-v /path/of/yours.conf:/usr/local/srs/conf/srs.conf \
-v /path/of/yours.log:/usr/local/srs/objs/srs.log \
ossrs/srs:3
Note: You should create the log file by
mkdir -p /path/of && touch /path/of/yours.log
, then start SRS.
Note: How to write the correct config file, please read wiki(CN/EN).
To use docker images in AliyunCR,
please use registry.cn-hangzhou.aliyuncs.com/ossrs/srs
.
For example:
docker run registry.cn-hangzhou.aliyuncs.com/ossrs/srs:3
Note: Strongly recommend to use AliyunCR, because it's is much faster and has all tags.
Download config and script files:
git clone https://github.com/ossrs/srs-docker.git &&
cd srs-docker/3.0
Start origin serverA:
HostIP=`./auto/get_host_ip.sh` &&
docker run -p 19350:19350 -p 9090:9090 --add-host=docker:${HostIP} \
-v `pwd`/conf/origin.cluster.serverA.conf:/usr/local/srs/conf/srs.conf \
ossrs/srs:3
Start origin serverB:
HostIP=`./auto/get_host_ip.sh` &&
docker run -p 19351:19351 -p 9091:9091 --add-host=docker:${HostIP} \
-v `pwd`/conf/origin.cluster.serverB.conf:/usr/local/srs/conf/srs.conf \
ossrs/srs:3
Start edge server:
HostIP=`./auto/get_host_ip.sh` &&
docker run -p 1935:1935 -p 1985:1985 -p 8080:8080 --add-host=docker:${HostIP} \
-v `pwd`/conf/origin.cluster.edge.conf:/usr/local/srs/conf/srs.conf \
ossrs/srs:3
Publish stream to edge server(or any origin server):
ffmpeg -re -i doc/source.200kbps.768x320.flv -c copy -f flv rtmp://127.0.0.1/live/livestream
Play stream from edge:
ffmpeg -f flv -i rtmp://127.0.0.1/live/livestream -f flv -y /dev/null
If now streaming to serverA, we can stop it then restart the publisher, then the edge will choose serverB and stream to it.
For #1523,
we copy the FFMEPG from ossrs/srs:dev,
and put to /usr/local/srs/objs/ffmpeg/bin/ffmpeg
which is the default value of configs.
You can replace it by docker -v
, for example:
docker run -p 1935:1935 -p 1985:1985 -p 8080:8080 \
-v /path/of/ffmpeg:/usr/local/srs/objs/ffmpeg/bin/ffmpeg \
ossrs/srs:3
Remark: You can replace config, log and tools by specifying
-v
for each one.
For windows PowerShell, we start a demo stream, ingested by FFMPEG:
docker run -p 1935:1935 -p 1985:1985 -p 8080:8080 `
-v $pwd/doc/source.200kbps.768x320.flv:/usr/local/srs/doc/source.200kbps.768x320.flv `
-v $pwd/conf/windows.conf:/usr/local/srs/conf/srs.conf `
ossrs/srs:3
Then, we can play the demo stream by:
- RTMP: rtmp://127.0.0.1/live/livestream
- FLV: http://127.0.0.1:8080/live/livestream.flv
- HLS: http://127.0.0.1:8080/live/livestream.m3u8
For debuggging:
- Check files of docker:
docker run -it ossrs/srs bash
- Use specified versions:
docker run -it ossrs/srs:v3.0-a2 bash
- To use other config file:
docker run -v /path:/usr/local/srs/conf ossrs/srs:3 ./objs/srs -c other.conf
- Use gdb to debug SRS, please use dev.
Winlin 2019.11