[FFmpeg-user] RTMP stream URL truncation

Dan Harrison nixscripter at gmail.com
Sun Jul 7 20:47:00 CEST 2013


Hello, list.

I'm trying to use FFmpeg to save an RTMP stream from the internet (i.e. a
server I don't control). It claims it cannot find the stream. When I look
at verbose output, however, the problem is clear:

$ ffmpeg -loglevel verbose -i "rtmp://foo.net/cfx/st/mp4:BAR_BAZ/file.mp4"
out.mp4
...
HandleInvoke, received result for method call
<createStream>
SendPlay, seekTime=0, stopTime=0, sending play: mp4:file

Invoking
play
...

Notice that "file.mp4" got its suffix dropped, even though it was part of
the stream's name. As a result, the server replies it cannot find the
stream:

...
(object begin)
Property: <Name:              level, STRING:    error>
Property: <Name:               code, STRING:
NetStream.Play.StreamNotFound>
Property: <Name:        description, STRING:    Failed to play file; stream
not found.>
Property: <Name:            details, STRING:    file>
Property: <Name:           clientid, STRING:    xlaQOJIn>
(object end)
...

I'm guessing that FFmpeg used the librtmp library the same way rtmpdump
does, because it does the same thing (verbose output not shown is identical
to the above):

$ rtmpdump -r "rtmp://foo.net/cfx/st/mp4:BAR_BAZ/file.mp4" -o out.mp4
(c) 2010 Andrej Stepanchuk, Howard Chu, The Flvstreamer Team; license: GPL
Connecting ...
INFO: Connected...
...
ERROR: Closing connection: NetStream.Play.StreamNotFound

And yet, when I use mplayer or mencoder -- which also uses librtmp -- it
decides not to drop the suffix, and works correctly:

$ mplayer -msglevel all=6 "rtmp://foo.net/cfx/st/mp4:BAR_BAZ/file.mp4"
...
[rtmp @ 0x7f33ea814060]Handshaking...
[rtmp @ 0x7f33ea814060]Type answer 3
[rtmp @ 0x7f33ea814060]Server version 3.5.7.1
[rtmp @ 0x7f33ea814060]Proto = rtmp, path = /cfx/st/mp4:BAR_BAZ/file.mp4,
app = cfx/st, fname = mp4:BAR_BAZ/file.mp4
[rtmp @ 0x7f33ea814060]Server bandwidth = 1310720
[rtmp @ 0x7f33ea814060]Client bandwidth = 2500000
[rtmp @ 0x7f33ea814060]Creating stream...
[rtmp @ 0x7f33ea814060]Sending play command for 'mp4:BAR_BAZ/file.mp4'
[rtmp @ 0x7f33ea814060]New incoming chunk size = 4096
STREAM: [ffmpeg] rtmp://foo.net/cfx/st/mp4:BAR_BAZ/file.mp4
...

In fact, as you can see, mplayer uses libavcodec to decode the stream! So I
know the code all works once this little problem gets solved.

How do I get FFmpeg to tack my suffix back on?
--
Dan Harrison


More information about the ffmpeg-user mailing list