Bresiu
Bresiu

Reputation: 2153

Seek and pause video stream from ffserver

I managed to successfully feed ffserver from ffmpeg. ffmpeg takes input as PIPE:

ffmpeg -loglevel fatal -f image2pipe -re -vcodec png -i - -vcodec libx264 http://localhost:8090/%s.ffm

External java process generates svg/png images and pushes to ffpmepg

My ffserver config allows me to buffer live feeds in ffm file without defining the size of the file.

My stream configuration looks like this:

<Stream live2.mjpg>
   Feed feed2.ffm
   Format mpjpeg
   VideoFrameRate 25
   VideoSize 640x880
   VideoQMin 1
   VideoQMax 5
   NoAudio
   Strict -1
</Stream>

The problem is that, despite that I can watch streams in VLC by opening network:

http://0.0.0.0:8090/live2.mjpg

But I can not seek through already buffered movie. Is there a way to achieve seeking through movie, pausing, and resume playing from "now"? I have tried already rtsp with h264, mpg and sdp but without success:

<Stream test1.mpg/sdp/h264>
   Format rtp
   Feed feed2.ffm
   VideoCodec libx264
   VideoSize 640x880
   VideoQMin 1
   VideoQMax 5
   NoAudio
   Strict -1
   VideoFrameRate 25
</Stream>

Is rtsp solution for this problem, or I need something else?

Can this be achieved from dynamic file since I am using PIPE?

Upvotes: 2

Views: 4762

Answers (1)

aergistal
aergistal

Reputation: 31209

  • RTSP

    RTSP support in ffserver seems a bit sketchy, you could try Darwin Streaming Server or the Live555 media server. The two seem to support some forms of trick-play at least for VOD. Since you're using a pipe this won't probably help.

  • RTMP

    Some RTMP servers/clients support in-buffer seeking (Smart Seeking).

    About Smart Seek

    Adobe Media Server 3.5.3 and Flash Player 10.1 work together to support smart seeking in VOD streams and in live streams that have a buffer. [Source].

    ffserver doesn't support RTMP output but you can use your ffmpeg command to push your stream directly to the server:

    ffmpeg -re -i <input> -f flv rtmp://...

    There's a Nginx RTMP module and a C++ RTMP server although it's not very clear if they support smart seeking. VLC seems to be able to seek a bit while paused and there are usually options to modify the size of the client RTMP buffer.

Upvotes: 1

Related Questions