View Single Post
  #1  
Old 06-22-2009, 02:09 AM
any ANONYMOUS forum user any ANONYMOUS forum user is offline
any user of the forum who preferred to post anonymously
 
Join Date: Aug 2011
Location: Server of stream-recorder.com
Posts: 211
any ANONYMOUS forum user is on a distinguished road
Default

Akamai CDN: Getting RTMP URL From XML File


Akamai CDN: Getting RTMP URL From XML File

Where I work, my company uses Akamai as the CDN for all properties. Initially our company used non-RTMP downloadable URL from Akamai, but, later after some struggling (in May 2008 or so) I was able to figure out how to extract RTMP from Akamai's XML File.

Akamai Provides two URLs for each File:
  1. Downloadable FLV URL
    Returns the actual FLV File. The URL Format of this file is:
    Code:
    http://[your_company_name].edgeboss.net/download/[your_company_name]/[path_to_file]/
  2. Streaming URL
    Returns an XML File. The URL Format of this file is:
    Code:
    http://[your_company_name].edgeboss.net/flash/[your_company_name]/[path_to_file]/

#1 is self-explanatory, when you visit that URL, you get the RAW FLV File. so, I will talk on #2.

#2. Streaming URL: When you try visiting the streaming URL. It returns an XML File like below:
Code:
<FLVPlayerConfig>
  <serverName>cp49576.edgefcs.net</serverName>
  <fallbackServerName>cp49576.edgefcs.net</fallbackServerName>
  <appName>ondemand</appName>
  <streamName>
    flash/streamfile/.uid.ManyRzefr9384ec84.anti
   </streamName>
   <isLive>false</isLive>
   <bufferTime>2</bufferTime>
</FLVPlayerConfig>
To get the RTMP URL, all you need to do is concat the node value of serverName, appName and streamName. That's it. So, basically:
Code:
rtmp://[serverName]/[appName]/[streamName]
So, for the above case, the rtmp URL would be:
Code:
rtmp://cp49576.edgefcs.net/ondemand/flash/streamfile/.uid.ManyRzefr9384ec84.anti
Now the above RTMP URL can be used on popular Flash Players like JWPlayer.

I usually use PHP DomDocument and DomXPath to get the RTMP URL. The code would be simple and straight-forward like below:
Code:
$dom   = new DomDocument($akamaiURL);
$xpath = new DomXPath($dom);

$rtmpURL = 'rtmp://'.$xpath->query('/FLVPlayerConfig/serverName')->item(0)->nodeValue .'/'. $xpath->query('/FLVPlayerConfig/appName')->item(0)->nodeValue . '/' . $xpath->query('/FLVPlayerConfig/streamName')->item(0)->nodeValue;
I hope it helps.

Please Note that: In this article, I didn't cover the Akamai URL that requires Authentication Token, which is a separate issue.
Reply With Quote