FFmpeg - Output Network Stream
This article provides a practical reference for using FFmpeg to output a continuous network stream to common streaming protocols.
All examples assume:
- MPEG Transport Stream (MPEG-TS) container
- AVC (H.264) video
- AAC audio
- Continuous looping (`-stream_loop -1`)
- Real-time pacing (`-re`)
- Direct passthrough of codecs (`-c copy`)
Overview
FFmpeg can output live network streams to protocols such as RTMP, RTSP, SRT, and IceCast.
RTMP
ffmpeg -re -stream_loop -1 -i <input.file> -c copy -flush_packets 0 -f flv rtmp://<destination.address>:1935/<output.file>
RTSP
ffmpeg -re -stream_loop -1 -i <input.file> -c copy -f rtsp rtsp://<destination.address>:554/<output.file>
SRT
ffmpeg -re -stream_loop -1 -i <input.file> -c copy -f mpegts 'srt://<destination.address>:8890/<output.file>?streamid=publish:big_buck_bunny_480p_h264_stereo_aac&pkt_size=1316'
IceCast
ffmpeg -re -stream_loop -1 -i <input.file> -c copy -f mpegts -content_type 'video/mp4' icecast://<username>:<password>@<destination.address>:8000/<output.file>
References
- Streaming Media
- FFmpeg Documentation – https://ffmpeg.org/documentation.html