trunk/3rdparty/srs-docs/doc/streamer.md
Stream Converters listen at special TCP/UDP ports, accept new connections and receive packets, then convert to and push RTMP stream to SRS server like a RTMP client.
In short, it converts other protocols to RTMP, works like this:
Client ---PUSH--> Stream Converter --RTMP--> SRS --RTMP/FLV/HLS/WebRTC--> Clients
Note: Some stream protocol contains more than one single stream or even transport connections.
There are some use scenarios for stream caster, for example:
Note: FFmpeg supports PUSH MPEGTS over UDP and FLV by HTTP POST to SRS.
Stream Converter is always enabled in SRS, while some protocols might need special configure parameters, please read instructions of each protocol.
The protocols supported by Stream Converter:
The configuration for stream converter:
# Push MPEGTS over UDP to SRS.
stream_caster {
# Whether stream converter is enabled.
# Default: off
enabled on;
# The type of stream converter, could be:
# mpegts_over_udp, push MPEG-TS over UDP and convert to RTMP.
caster mpegts_over_udp;
# The output rtmp url.
# For mpegts_over_udp converter, the typically output url:
# rtmp://127.0.0.1/live/livestream
output rtmp://127.0.0.1/live/livestream;
# The listen port for stream converter.
# For mpegts_over_udp converter, listen at udp port. for example, 8935.
listen 8935;
}
# Push FLV by HTTP POST to SRS.
stream_caster {
# Whether stream converter is enabled.
# Default: off
enabled on;
# The type of stream converter, could be:
# flv, push FLV by HTTP POST and convert to RTMP.
caster flv;
# The output rtmp url.
# For flv converter, the typically output url:
# rtmp://127.0.0.1/[app]/[stream]
# For example, POST to url:
# http://127.0.0.1:8936/live/livestream.flv
# Where the [app] is "live" and [stream] is "livestream", output is:
# rtmp://127.0.0.1/live/livestream
output rtmp://127.0.0.1/[app]/[stream];
# The listen port for stream converter.
# For flv converter, listen at tcp port. for example, 8936.
listen 8936;
}
Please follow instructions of specified protocols bellow.
You're able to push MPEGTS over UDP to SRS, then covert to RTMP and other protocols.
First, start SRS with configuration for MPEGTS:
./objs/srs -c conf/push.mpegts.over.udp.conf
Note: About the detail configuration, please read about the
mpegts_over_udpsection of config.
Then, start to push stream, for example, by FFmpeg:
ffmpeg -re -f flv -i doc/source.flv -c copy -f mpegts udp://127.0.0.1:8935
Finally, play the stream:
Please note that each UDP port is bind to a RTMP stream.
Note: About the development notes, please see #250.
You're also able to push HTTP FLV by HTTP POST, which is very simple for mobile device to send HTTP stream.
First, start SRS with configuration for FLV:
./objs/srs -c conf/push.flv.conf
Note: About the detail configuration, please read about the
flvsection of config.
Then, start to push stream, for example, by FFmpeg:
ffmpeg -re -f flv -i doc/source.flv -c copy \
-f flv http://127.0.0.1:8936/live/livestream.flv
Finally, play the stream:
Note: About the development notes, please see #2611.
It's been eliminated, see #2304.
2015.1