[FFmpeg-devel] [PATCH/RFC] Detecting EOF in RTMP

Martin Storsjö martin
Fri Dec 11 12:16:48 CET 2009


On Thu, 10 Dec 2009, Kostya wrote:

> On Thu, Dec 10, 2009 at 12:12:50PM -0500, compn wrote:
> > On Thu, 10 Dec 2009 17:23:03 +0200, Kostya wrote:
> > >On Thu, Dec 10, 2009 at 04:37:59PM +0200, Martin Storsj? wrote:
> > >> 
> > >> When the live broadcast ends, the current rtmp protocol handler doesn't 
> > >> detect this as an eof, and thus sits and waits for more data on the 
> > >> connection.
> > >
> > >Looks like Wowza does not follow RTMP standards :(.

What would be the proper standard way of indicating that the stream has 
reached the end, by the way? I tried all the streams on the RTMP 
MultimediaWiki page (most of them were dead, but a few of them worked), 
and found a few different cases:

- Some streams end without sending a single hint that there won't be any 
more data (e.g. 
rtmp://fsapfs.fplive.net/fsap/Videos/foie_gras_uk_high.flv)

- Some streams send a NetStream.Play.Stop event, followed by a server 
error (e.g., 
rtmp://fl9.maelstrom.jet-stream.nl:80/vod/vdoxadmin/jeroen/bunny.mp3 sends 
this immediately, to indicate that the file isn't found at all)

- Some streams send an NetStream.Play.UnpublishNotify event, followed by a 
server error ("Failed to play foobar; stream not found."), when the stream 
ends. This occurred with the "live" example in Wowza.

- Some streams send an NetStream.Play.Stop event, not followed by any 
server error. This occurred when serving a static file through Wowza.

In my patch from yesterday, I reacted to the 
NetStream.Publish.UnpublishNotify event, but when testing things today, I 
only receive NetStream.Play.UnpublishNotify events instead. Either the 
former was a mistake in documenting my findings yesterday, or some servers 
can return either one. I only kept the Play.UnpublishNotify version for 
now.

Adding the STREAM_STOPPED behaviour as in my patch makes some of these eof 
error messages be lost, since the Stop/Unpublish status codes preceding 
the error messages terminate reading from the stream at that time.

> > is it possible to detect wowza server and then use non-standard exit
> > procedure?
> 
> Yes, it sends notification with full server name and version. 

I guess that would be an option, but I'm not sure if this is a general 
wowza-specific behaviour.

Attached is an updated patch.

Kostya, do you want me to add wowza detection and enable this only in that 
particular case?

// Martin
-------------- next part --------------
A non-text attachment was scrubbed...
Name: ffmpeg-rtmp-eof.patch
Type: text/x-diff
Size: 1978 bytes
Desc: 
URL: <http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/attachments/20091211/0c92eaf9/attachment.patch>



More information about the ffmpeg-devel mailing list