[FFmpeg-devel] [PATCH/RFC] Detecting EOF in RTMP
Kostya
kostya.shishkov
Thu Dec 10 16:23:03 CET 2009
On Thu, Dec 10, 2009 at 04:37:59PM +0200, Martin Storsj? wrote:
> Hi,
>
> I tried out the new and fancy RTMP support recently, against a slightly
> customized Wowza setup.
>
> 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 :(.
> When the broadcast is terminated, the last packet either contains a single
> NetStream.Publish.UnpublishNotify status, or sometimes it contains a
> series of four status codes:
> NetStream.Publish.UnpublishNotify
> NetStream.Play.Stop
> NetStream.Play.Reset
> NetStream.Play.Start
I think one of RTMP streams I encountered sent UnpublishNotify right at
the beginning (possibly indicating that stream is empty), so it could be
EOF.
> The attached patch is an attempt at fixing this case. The if clause in
> rtmp_parse_result is needed since the packet that contained
> UnpublishNotify also could contain a new Start status code.
>
> On the other hand, that particular behaviour (sending a new Start code
> even if no more data is sent) perhaps should be regarded as a server
> misbehaviour? But I think at least the single UnpublishNotify should
> trigger an eof in some way.
Yes, it should trigger EOF - return AVERROR(EOF) instead of 0 in
packet_read().
> Kostya, what do you think about this approach? How is the eof condition
> handled in other setups?
>
> // Martin
More information about the ffmpeg-devel
mailing list