Docker
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:
- RTMP (by VLC):
rtmp://localhost/live/livestream
- H5(HTTP-FLV): http://localhost:8080/live/livestream.flv
- H5(HLS): http://localhost:8080/live/livestream.m3u8
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: http://localhost:1985/rtc/v1/whep/?app=live&stream=livestream
- H5(HTTP-FLV): http://localhost:8080/live/livestream.flv
- H5(HLS): http://localhost:8080/live/livestream.m3u8
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.
First, start SRS with Docker:
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'
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.
rtmp://ip/live/livesteam
rtmp://ip/live/livesteamN
rtmp://ip/liveN/livestreamN
rtmp://ip/whatever/doesnotmatter
srt://ip:10080?streamid=#!::r=anyM/streamN,m=publish
http://ip:1985/rtc/v1/whip/?app=anyM&stream=streamN
http://ip:1985/rtc/v1/whep/?app=anyM&stream=streamN
http://ip:8080/anyM/streamN.flv
http://ip:8080/anyM/streamN.m3u8
https://ip:8080/anyM/streamN.flv
https://ip:8080/anyM/streamN.m3u8
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 URL documentation.