【问题标题】:Audio streaming protocol for StreamTheWorld.netStreamTheWorld.net 的音频流协议
【发布时间】:2012-07-14 03:41:04
【问题描述】:

我正在尝试从 streamtheworld 下载和捕获音频流,到目前为止我发现的唯一一件事是它使用 HTTP 协议,并且内部可以看到一些 FLV 标头。但是,它不能播放。

我将不胜感激任何有关它的信息。传输 (http)、容器、编码,欢迎提供任何信息。

这种音频流的一个例子:

http://player.streamtheworld.com/_players/arn/index.php?callsign=VIRGINRADIO_DUBAI

【问题讨论】:

    标签: audio-streaming


    【解决方案1】:

    获取流的呼号。对于 City 101.6 Fm Dubai,它的 ARNCITY。

    使用以下网址http://provisioning.streamtheworld.com/pls/,并替换pls/后的呼号。

    所以最终的 URl 看起来像 http://provisioning.streamtheworld.com/pls/ARNCITY.pls

    在 Firefox 中打开它,它会要求您将 ARNCITY.pls 下载到您的计算机上。

    下载文件并在记事本中打开它,您将获得实际的流 URL。

    在 windows 媒体播放器或任何媒体播放器中使用任何人,你都准备好了..

    仅此而已.....希望对您有所帮助

    【讨论】:

    • 哇,他们也有SHOUTCAST :) 你是怎么想出来的?
    【解决方案2】:

    这只是基于 HTTP 的 AAC。没什么特别的。

    您可以使用Fiddler 找到流 URL。在这种情况下,它是:http://4093.live.streamtheworld.com/VIRGINRADIO_DUBAIAAC

    从那里,您可以使用 WGET 或 VLC 等简单的东西进行翻录。


    引导您完成整个过程....

    首先container page 加载。该页面使用参数flashvars.callsign="VIRGINRADIO_DUBAI" 调用Flash 播放器。毫无疑问,它是从初始容器页面 URL 中的 GET 参数中获取的。随意尝试。

    第二,Flash播放器下载http://player.streamtheworld.com/_players/arn/coreconfig.xml。这包含有用的信息。摘录如下:

        <zone type="liveStream">
    
            <liveStream>
    
            <!-- the endpoint node is option, and will default to the stated value if absent  -->
                <endpoint>http://playerservices.streamtheworld.com/api/livestream</endpoint>
    
            <!-- version is a mandatory value -->
            <version>1.4</version>
    
            <!-- Mount is a mandatory variable  -->
            <mount>KEYJFM</mount>
    
            <!-- The lang variable is optional, and will default to the stated value if absent  -->
            <lang>EN</lang>
    
            <!-- The transport variable is optional, and will default to the stated value if absent  -->
            <transport>http</transport>
    
            <!-- This parameter will be appended to the the mount call in the event of an HD request. -->
            <hdPostFix>AAC</hdPostFix>
    
            <!-- Possible values are hdConnection, normalConnection and hdAlternate -->
            <connectionType>hdAlternate</connectionType>
    
            </liveStream>
    
            <nowPlayingHistory>
    
            <!-- the endpoint node is option, and will default to the stated value if absent  -->
                <endpoint>http://playerservices.streamtheworld.com/public/nowplaying</endpoint>
    
            </nowPlayingHistory>
    
    
        </zone>
    

    播放器还抢了http://playerwebadmin.streamtheworld.com/xmlconfig.php?view=xml&callsign=VIRGINRADIO_DUBAI&streamid=8263,里面有一些无意义的废话,比如给你看什么视频广告。

    视频广告之后,播放器抓取:http://playerservices.streamtheworld.com/api/livestream?version=1.4&mount=VIRGINRADIO_DUBAIAAC&lang=EN&transports=http&nobuf=1311628718296

    注意相应的参数,如versionmountlang等。认得出来吗?是的,它们来自第一个 XML 文件。

    最后,Flash 播放器从最终 XML 文件中获得了向流发出请求所需的所有信息。

    所有这些您都可以通过Fiddler 轻松搞定。以后请考虑使用。

    【讨论】:

    • 谢谢!现在,让我们假设情况确实如此(关于 aac - 我猜你在谈论 aacplus) - 现在 - 如何在没有 fiddler 的情况下找出流的 URL?任何想法? Winpcap?
    • @Daniel,你的意思是编程?只需解析页面。你如何做到这一点取决于你使用的语言......是的,确实如此。
    • 解析哪个页面得到4093.live.streamtheworld.com/VIRGINRADIO_DUBAIAAC?它不会出现在原始页面上。