It is indeed the same type of streaming. I believe this streaming is part of the Akamai EdgePlatform. The data is in these onEdge blocks throughout the flv.
the first one includes more information then subsequent blocks. It also has a large base64 encoded block which i am unsure what exactly it is. It seems to always begin with CWS when base64 decoded. I removed the large data64 value to fit the example in this post. I also removed the ip addresses.
Code:
onEdge: { session: "AQBjD3WnQNbjlYeGFFDdmGJBxzMU9UiEzGZ3idf+4Hc0TuexCuMmr0yrW96mQhQW5UvYoZ2m", tat: 46.246, dvrWindow: -1.0, timeBase: 0.0, timeOfLastTAT: 1.343522439329963E9, errorNumber: 0.0, status: 0.0, streamType: 3.0, streamStartTime: 0.0, liveDelay: 0.0, isLive: false, switchFail: false, streamName: "mpx/video/Nat_Geo_Channels/27/162/The_Gloves_Come_Off_Teaser_ngc_015.flv_0_0@1", transferToken: "q1bSV6Tc", data64: "", edgeVersion: "X.X.X.X", edgeIP: "X.X.X.X", playerIP: "X.X.X.X" }
the session value is used in the header for further http requsts as the "x-Akamai-Streaming-SessionID". there is also a "x-Akamai-Streaming-SessionToken" header value which i believe is generated from the transfer token in the first onEdge block.
the stream name value is that path to send commands to the server. The first request looks something like this. I have monitored a variety of commands it sends. The first is sendNewToken. The rest seem to be buffering and throttling information.
here is an example url for one of these commands. These are always POST and not GET commands. It sends "
" as the data for the post.
hxxp://natgeo-f.akamaihd.net/control/video/player/media/weirdest-flounder/weirdest-flounder.flv_0_0@14?cmd=sendingNewToken&v=2.7.6&r=FMEKU&g=HTLELQJJEOKL&lvl1=0.287,60,0.5,0,0,NaN,0,0,sbr,sbr,0.054,1343523031.066,0.054,0,0.054,121.103,34,NaN,0,0,0,0,u,false&swf=http%3A//images.nationalgeographic.com/wpf/sites/video/swf/ngplayer_v2.2.swf
Quote:cmd sendingNewToken
v 2.7.6
r FMEKU
g HTLELQJJEOKL
lvl1 0.287,60,0.5,0,0,NaN,0,0,sbr,sbr,0.054,1343523031.066,0.054,0,0.054,121.103,34,NaN,0,0,0,0,u,false
swf http://images.nationalgeographic.com/wpf...r_v2.2.swf
so the path is from the streamName value in onEdge. The parameters are generated in the action script of the swf. I want to take a look at the action script that is activated when the onEdge blocks are received.
The rest of the onEdge packets contain less data then the first. they look something like below.
Code:
onEdge: { session: "AQBjD3WnF0Lnl8MBAVCTcutQ4Pefrfm7nfEYlaWF2ibT+rDaxpFveYaiDz0qiB66ZPy4gcjE", tat: 2744.01, dvrWindow: -1.0, timeBase: 5.071, timeOfLastTAT: 1.342243267540281E9, errorNumber: 0.0, status: 0.0, streamType: 3.0, streamStartTime: 0.0, liveDelay: 0.0, isLive: false, switchFail: false, streamName: "channel/feed/362/225.flv_0_0@1" }
The "errorNumber" value always jumps in the last block before the stream drops.
I was wanting to write something to just download the video and send the proper commands for it to complete. I was hoping that could the first step in getting these streams working in XBMC.
I am only at the point of trying to understand everything happening though.
Sorry to go way off topic of the Olympics.
I found some documentation from brightcove about onEdge commands. It seems to confirm what I was thinking.
http://docs.brightcove.com/en/player/com...:mediaEdge