ffmpegvideo-streamingrtsp

What steps are needed to stream RTSP from FFmpeg?


What steps are needed to stream RTSP from FFmpeg?

Streaming UDP is not a problem, but as I want to stream to mobile devices which can natively read RTSP streams, I couldn't find any setup which tells what exactly is needed. Do I need an RTSP streaming server like LIVE555 or can I use FFmpeg only?

My Command:

ffmpeg -i space.mp4 -vcodec libx264 -tune zerolatency -crf 18 -f rtsp -muxdelay 0.1 rtsp://192.168.1.200:1234

I get an Input/Output error.

Do I need a SDP description to use RTSP? And if yes where do I have to put it?


Solution

  • You can use FFserver to stream a video using RTSP.

    Just change console syntax to something like this:

    ffmpeg -i space.mp4 -vcodec libx264 -tune zerolatency -crf 18 http://localhost:1234/feed1.ffm
    

    Create a ffserver.config file (sample) where you declare HTTPPort, RTSPPort and SDP stream. Your config file could look like this (some important stuff might be missing):

    HTTPPort 1234
    RTSPPort 1235
    
    <Feed feed1.ffm>
            File /tmp/feed1.ffm
            FileMaxSize 2M
            ACL allow 127.0.0.1
    </Feed>
    
    <Stream test1.sdp>
        Feed feed1.ffm
        Format rtp
        Noaudio
        VideoCodec libx264
        AVOptionVideo flags +global_header
        AVOptionVideo me_range 16
        AVOptionVideo qdiff 4
        AVOptionVideo qmin 10
        AVOptionVideo qmax 51
        ACL allow 192.168.0.0 192.168.255.255
    </Stream>
    

    With such setup you can watch the stream with i.e. VLC by typing:

    rtsp://192.168.0.xxx:1235/test1.sdp
    

    Here is the FFserver documentation.

    FFserver not supported after 2018. See this for details