[rtmpdump] rtmpdump recording help

Allan Frank allan-rtmpdump at teamcow.dk
Sun Nov 20 11:52:13 CET 2011


Hi

I've been successfully recording tv from my cable companys web offering (
yousee.tv). It's not public so I can't show you how it looks.

Unfortunately it stopped working a little over a week ago - maybe they
switched server versions.

This was the command I used to successfully record with before:

./rtmpdump -r rtmpe://live.fmis.yousee.tv/live -v -o tmp.flv -V -W
http://yousee.tv/design/swf/YouSeeVideoPlayer_beta.swf --pageUrl
http://yousee.tv/livetv/dr1?remote -y "encoder1_1200" -f "WIN 10,0,32,18"
-live -C O:1

Now this gives me:

DEBUG: Property: <Name:           no-name., STRING:     _error>
DEBUG: Property: <Name:           no-name., NUMBER:     1.00>
DEBUG: Property: NULL
DEBUG: Property: <Name:           no-name., OBJECT>
DEBUG: (object begin)
DEBUG: Property: <Name:              level, STRING:     error>
DEBUG: Property: <Name:               code, STRING:
NetConnection.Connect.Rejected>
DEBUG: Property: <Name:        description, STRING:     Connection failed.>
DEBUG: Property: <Name:        application, BOOLEAN:    FALSE>

So I went to use rtmpsuck to see if I needed to include additional data on
the connect request using the --conn/-C command. The normal flash client
includes a HUGE amount of request data (compared to others I've seen
discussed on the net). I've included the request below but edited it
heavily to not flood you:

DEBUG: ServePacket, client sent packet type 14, size 17601 bytes
DEBUG: (object begin)
DEBUG: Property: <Name:           no-name., STRING:     connect>
DEBUG: Property: <Name:           no-name., NUMBER:     1.00>
DEBUG: Property: <Name:           no-name., OBJECT>
DEBUG: (object begin)
DEBUG: Property: <Name:                app, STRING:     live>
DEBUG: Property: <Name:           flashVer, STRING:     WIN 11,0,1,152>
DEBUG: Property: <Name:             swfUrl, STRING:
http://yousee.tv/design/swf/YouSeeVideoPlayer_beta.swf>
DEBUG: Property: <Name:              tcUrl, STRING:     rtmpe://
live.fmis.yousee.tv/live>
DEBUG: Property: <Name:               fpad, BOOLEAN:    FALSE>
DEBUG: Property: <Name:       capabilities, NUMBER:     239.00>
DEBUG: Property: <Name:        audioCodecs, NUMBER:     3575.00>
DEBUG: Property: <Name:        videoCodecs, NUMBER:     252.00>
DEBUG: Property: <Name:      videoFunction, NUMBER:     1.00>
DEBUG: Property: <Name:            pageUrl, STRING:
http://yousee.tv/livetv/dr1/>
DEBUG: Property: <Name:     objectEncoding, NUMBER:     3.00>
DEBUG: (object end)
DEBUG: Property: <Name:           no-name., OBJECT>
DEBUG: (object begin)
DEBUG: Property: <Name:        channelData, OBJECT>
DEBUG: (object begin)
DEBUG: Property: <Name:         channelAry, OBJECT>
DEBUG: (object begin)
DEBUG: Property: <Name:                  0, OBJECT>
DEBUG: (object begin)
DEBUG: Property: <Name:                url, STRING:     /livetv/dr1>
DEBUG: Property: <Name:   totalMillisecond, NUMBER:     nan>
DEBUG: Property: <Name:         logo_large, STRING:
http://cloud.yousee.tv/static/img/logos/large_dr1.png>
DEBUG: Property: <Name:                 id, STRING:     dr1>
DEBUG: Property: <Name:                xml, STRING:
http://yousee.tv/feeds/player/livetv/dr1/?1321388604.7347>
DEBUG: Property: <Name:               name, STRING:     DR1>
DEBUG: Property: <Name:         logo_small, STRING:
http://cloud.yousee.tv/static/img/logos/small_dr1.png>
DEBUG: Property: <Name:            logoUrl, STRING:
http://cloud.yousee.tv/static/img/logos/small_dr1.png>
DEBUG: Property: <Name:   startMillisecond, NUMBER:     nan>
DEBUG: (object end)
DEBUG: Property: <Name:                  1, OBJECT>
DEBUG: (object begin)
DEBUG: Property: <Name:                url, STRING:     /livetv/dr2>
DEBUG: Property: <Name:   totalMillisecond, NUMBER:     nan>
DEBUG: Property: <Name:         logo_large, STRING:
http://cloud.yousee.tv/static/img/logos/large_dr2.png>
DEBUG: Property: <Name:                 id, STRING:     dr2>

... this continues to all the way up to object 24 - one for each channel ...

DEBUG: (object end)
DEBUG: (object end)
DEBUG: Property: NULL
DEBUG: (object end)
DEBUG: Property: <Name:              token, STRING:
/cCFV5CFanarewY0IjC+kpU/3qe8cPd+esf+2TTbQNsslV7Ie81V86iVsoZ/nOtBQJZy1h1NXFN4Dw31uDXEFPfwhyccZ8RVij+sXYb27n2msR3k3ulETYD
z+KhYqA4VWbqR8MUMKyx7F5xFEYMlBmnH99acxwnJuLBEuNXZd/WIkvHGRsTDIigJEm0KJv4I7qox7BoK+rUvZgaa5ju4rPGkkDD6sN9hbsSBXZJt3eZoG61JpSeDxv>
DEBUG: Property: <Name:         servertime, STRING:     2011/11/15 21:23:24
UTC+0100>
DEBUG: Property: <Name:               skin, STRING:     yousee>
DEBUG: Property: <Name:        description, STRING:     >
DEBUG: Property: <Name:       timelineData, OBJECT>
DEBUG: (object begin)
DEBUG: Property: <Name:            itemAry, OBJECT>
DEBUG: (object begin)
DEBUG: Property: <Name:                  0, OBJECT>
DEBUG: (object begin)
DEBUG: Property: NULL
DEBUG: Property: <Name:        description, STRING:     >
DEBUG: Property: <Name:           duration, NUMBER:     0.00>
DEBUG: Property: <Name:     endMillisecond, NUMBER:     1321388700000.00>
DEBUG: Property: <Name:              title, STRING:     TV AVISEN>
DEBUG: Property: <Name:          timeLabel, STRING:     21:00-21:25>
DEBUG: Property: <Name:     original_title, STRING:     >
DEBUG: Property: <Name:              start, STRING:     2011/11/15 21:00:00
UTC+0100>
DEBUG: Property: <Name:   startMillisecond, NUMBER:     1321387200000.00>
DEBUG: Property: <Name:           director, STRING:     >
DEBUG: Property: <Name:                end, STRING:     2011/11/15 21:25:00
UTC+0100>DEBUG: (object end)
DEBUG: Property: <Name:                  1, OBJECT>
DEBUG: (object begin)
DEBUG: Property: NULL
DEBUG: Property: <Name:        description, STRING:     Glem alt om hurtig
sagsbehandling, hvis du går til politiet og anmelder, at du har været udsat
for bedrageri.  Efterfor
skning af økonomisk kriminalitet foregår ofte dræbende langsomt , og imens
de kriminelle fortsætter deres fupnumre, må l>

... this continues with further objects, 5 in total, which correspond to
the channel schedule ...

DEBUG: (object end)
DEBUG: (object end)
DEBUG: Property: NULL
DEBUG: Property: <Name:   totalMillisecond, NUMBER:     15900000.00>
DEBUG: Property: NULL
DEBUG: Property: <Name:   startMillisecond, NUMBER:     1321387200000.00>
DEBUG: Property: NULL
DEBUG: Property: <Name: currentMillisecond, NUMBER:     1321388604000.00>
DEBUG: (object end)
DEBUG: Property: <Name:         streamList, OBJECT>
DEBUG: (object begin)
DEBUG: Property: <Name:                  0, OBJECT>
DEBUG: (object begin)
DEBUG: Property: <Name:            bitrate, NUMBER:     600.00>
DEBUG: Property: <Name:         streamName, STRING:     encoder1_600>
DEBUG: (object end)
DEBUG: Property: <Name:                  1, OBJECT>
DEBUG: (object begin)
DEBUG: Property: <Name:            bitrate, NUMBER:     1200.00>
DEBUG: Property: <Name:         streamName, STRING:     encoder1_1200>
DEBUG: (object end)
DEBUG: (object end)
DEBUG: Property: <Name:    ratiochangeable, BOOLEAN:    FALSE>
DEBUG: Property: <Name:          subtitles, BOOLEAN:    FALSE>
DEBUG: Property: NULL
DEBUG: Property: <Name: serverMillionSecon, NUMBER:     1321388604000.00>
DEBUG: Property: <Name:     channelLogoUrl, STRING:
http://cloud.yousee.tv/static/img/logos/small_dr1.png>
DEBUG: Property: NULL
DEBUG: Property: <Name:               meta, STRING:     96600|YSBB|yousee.tv
|Livetv:dr1|webtv|livetv|605991935|>
DEBUG: Property: <Name:        channelName, STRING:     DR1>
DEBUG: Property: <Name:               type, STRING:     livetv>
DEBUG: Property: NULL
DEBUG: Property: <Name:          serverurl, STRING:     rtmpe://
live.fmis.yousee.tv/live>
DEBUG: (object end)
DEBUG: (object end)
DEBUG: ServeInvoke, client invoking <connect>

Which concludes the client request.

Server replies with:
DEBUG: Property: <Name:               code, STRING:
NetConnection.Connect.Success>

And the client is connected.

As you can see, the request is _very_ large. II've been trying with various
combinations of -C data, serverurl, channelName, type, tcUrl, etc. but with
no luck. Either my attempt results in:

DEBUG: RTMP_ClientPacket, received: invoke 126 bytes
DEBUG: (object begin)
DEBUG: Property: <Name:           no-name., STRING:     _error>
DEBUG: Property: <Name:           no-name., NUMBER:     1.00>
DEBUG: Property: NULL
DEBUG: Property: <Name:           no-name., OBJECT>
DEBUG: (object begin)
DEBUG: Property: <Name:              level, STRING:     error>
DEBUG: Property: <Name:               code, STRING:
NetConnection.Connect.Rejected>
DEBUG: Property: <Name:        description, STRING:     Connection failed.>
DEBUG: Property: <Name:        application, BOOLEAN:    FALSE>
DEBUG: (object end)
DEBUG: (object end)


Or in:

DEBUG: RTMP_ClientPacket, received: invoke 239 bytes
DEBUG: (object begin)
DEBUG: Property: <Name:           no-name., STRING:     _error>
DEBUG: Property: <Name:           no-name., NUMBER:     1.00>
DEBUG: Property: NULL
DEBUG: Property: <Name:           no-name., OBJECT>
DEBUG: (object begin)
DEBUG: Property: <Name:              level, STRING:     error>
DEBUG: Property: <Name:               code, STRING:
NetConnection.Connect.Rejected>
DEBUG: Property: <Name:        description, STRING:     Connection failed.>
DEBUG: Property: <Name:        description, STRING:     [ Server.Reject ] :
Adaptor: _defaultRoot_, VHost: _defaultVHost_, App: live/_definst_,
(onConnect call failed)>
DEBUG: (object end)
DEBUG: (object end)

For example the above command gives first error, whereas -C O:0 gives
second error - maybe because request no longer is valid?

I've even been trying to change the code to set serverurl, channelName with
additional AMF_EncodeNamedString() calls in SendConnectPacket, but that
also didn't work.

Server version seems to be:
DEBUG: HandShake: FMS Version   : 4.0.3.1

Do you have any hints that might help? Since the client request captured
via rtmpsuck is so large, I cannot realistically produce the same via -C
options. I've been thinking about overwriting the connect packet with the
captured one and see if that would work. It's either that or finding a
DVB-C capture card... :)

The email got rather long (sorry), but if you need additional data/logs,
please say so.

Thanks,

/Allan
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mplayerhq.hu/pipermail/rtmpdump/attachments/20111120/42bf59f3/attachment.html>


More information about the rtmpdump mailing list