Docker | SRS (original) (raw)

Please run SRS with docker.

Live Streaming

SRS supports live streaming.

Run SRS using docker:

docker run --rm -it -p 1935:1935 -p 1985:1985 -p 8080:8080 ossrs/srs:5

Note: The available images is here.

Use docker of FFmpeg to publish:

docker run --rm -it ossrs/srs:encoder ffmpeg -stream_loop -1 -re -i doc/source.flv \
  -c copy -f flv rtmp://host.docker.internal/live/livestream

Or publish stream by FFmpeg or OBS :

ffmpeg -re -i ./doc/source.flv -c copy -f flv rtmp://localhost/live/livestream

Note: The file ./doc/source.flv is under the source repository of SRS.

Play stream by:

WebRTC

SRS supports WebRTC for video chat.

Run SRS using docker:

CANDIDATE="192.168.1.10"
docker run --rm -it -p 1935:1935 -p 1985:1985 -p 8080:8080 -p 1990:1990 -p 8088:8088 \
    --env CANDIDATE=$CANDIDATE -p 8000:8000/udp \
    ossrs/srs:5

Note: Please replace the IP with your server IP.

Note: About CANDIDATE, please read CANDIDATE

If SRS runs on localhost, push stream to SRS by WebRTC: Publish

Note: If not localhost, browser(WebRTC) requires HTTPS, please see WebRTC using HTTPS for detail.

Play stream of SRS by WebRTC: Play

Note: If use different streams, you're able to do video chat application.

WebRTC for Live Streaming

SRS supports coverting live streaming to WebRTC.

Run SRS using docker:

CANDIDATE="192.168.1.10"
docker run --rm -it -p 1935:1935 -p 1985:1985 -p 8080:8080 \
    --env CANDIDATE=$CANDIDATE -p 8000:8000/udp \
    ossrs/srs:5 ./objs/srs -c conf/rtmp2rtc.conf

Note: Please replace the IP with your server IP.

Note: About CANDIDATE, please read CANDIDATE

Note: If convert RTMP to WebRTC, please use rtmp2rtc.conf

Use docker of FFmpeg to publish:

docker run --rm -it ossrs/srs:encoder ffmpeg -stream_loop -1 -re -i doc/source.flv \
  -c copy -f flv rtmp://host.docker.internal/live/livestream

Or publish stream by FFmpeg or OBS :

ffmpeg -re -i ./doc/source.flv -c copy -f flv rtmp://localhost/live/livestream

Note: The file ./doc/source.flv is under the source repository of SRS.

Play stream by:

WebRTC using HTTPS

When pushing stream to SRS, if not localhost, for example, to view WebRTC on pad or mobile phone, when SRS is running on remote server.

Note: If only need to play WebRTC stream, HTTP is ok. If wants to push stream, and not localhost, you need HTTPS.

Run SRS using docker:

CANDIDATE="192.168.1.10"
docker run --rm -it -p 1935:1935 -p 1985:1985 -p 8080:8080 -p 1990:1990 -p 8088:8088 \
    --env CANDIDATE=$CANDIDATE -p 8000:8000/udp \
    ossrs/srs:5 ./objs/srs -c conf/https.docker.conf

Note: Please replace the IP with your server IP.

Note: About CANDIDATE, please read CANDIDATE

Remark: Please use your HTTPS key and cert file, please read**HTTPS API**and **HTTPS Callback**and HTTPS Live Streaming, however HTTPS proxy also works perfect with SRS such as Nginx.

Push stream to SRS by WebRTC: Publish

Play stream of SRS by WebRTC: Play

Note: For self-sign certificate, please type thisisunsafe to accept it.

Note: If use different streams, you're able to do video chat application.

SRT for Live Streaming

SRS supports publishing by SRT for live streaming, and play by SRT or other protocols.

先用Docker启动SRS:

docker run --rm -it -p 1935:1935 -p 1985:1985 -p 8080:8080 -p 10080:10080/udp \
    ossrs/srs:5 ./objs/srs -c conf/srt.conf

Publish stream by FFmpeg or OBS :

ffmpeg -re -i ./doc/source.flv -c copy -pes_payload_size 0 -f mpegts \
  'srt://127.0.0.1:10080?streamid=#!::r=live/livestream,m=publish'

Play stream by ffplay or OBS

ffplay 'srt://127.0.0.1:10080?streamid=#!::r=live/livestream,m=request'

Multiple Streams

You can send multiple streams to SRS by using different URLs. There's no need to change any settings; just change the URL for the stream you're publishing and playing. It's very easy and straightforward.

SRS uses a configuration at the virtual host (vhost) level. All applications(app) and streams within the same vhost share this configuration. For more information, please refer to the RTMP URLdocumentation.