【问题标题】:How to get streaming url from online streaming radio station如何从在线流媒体电台获取流媒体 url
【发布时间】:2014-02-05 03:30:44
【问题描述】:

我被要求为某个广播电台制作非官方的在线流媒体 Android 应用程序。
我有使用 android 流式传输某些 mp3 或任何流的经验。
但我不知道在mediaPlayer.setDataSource(url) 中提供的stream url

有什么方法可以从官方流媒体页面获取流 url。 this radio stream?

【问题讨论】:

  • 除非我在互联网上找不到,否则我不会在这里问,我已经用谷歌搜索并搜索了 stakoverflow

标签: javascript android html stream


【解决方案1】:

没那么难,

如果您查看页面源代码,您会发现它用于通过直播播放音频。

这是直播网址

"StreamUrl": "http://stream.radiotime.com/listen.stream?streamIds=3244651&rti=c051HQVbfRc4FEMbKg5RRVMzRU9KUBw%2fVBZHS0dPF1VIExNzJz0CGQtRcX8OS0o0CUkYRFJDDW8LEVRxGAEOEAcQXko%2bGgwSBBZrV1pQZgQZZxkWCA4L%7e%7e%7e",

返回这样的 JSON:

{
    "Streams": [
        {
            "StreamId": 3244651,
            "Reliability": 92,
            "Bandwidth": 64,
            "HasPlaylist": false,
            "MediaType": "MP3",
            "Url": "http://mp3hdfm32.hala.jo:8132",
            "Type": "Live"
        }
    ]
}

我相信这就是您需要的网址: http://mp3hdfm32.hala.jo:8132

this is the station WebSite

【讨论】:

  • 就是这样!在发布之前,我尝试检查元素并找到类似的东西,但我找不到,谢谢
  • 我目前遇到了同样的问题,我需要在 this website 上播放音频帮助我
  • 这几乎不能作为答案。它仅适用于描述中给出的示例站!它不适用于“如何从在线流媒体广播电台获取流媒体网址”的问题,该问题适用于任何广播电台!!
【解决方案2】:

编辑了 ZygD 对 python 3.x. 的回答:

import re
import urllib.request
import string
url1 = input("Please enter a URL from Tunein Radio: ");
request = urllib.request.Request(url1);
response = urllib.request.urlopen(request);
raw_file = response.read().decode('utf-8');
API_key = re.findall(r"StreamUrl\":\"(.*?),\"",raw_file);
#print API_key;
#print "The API key is: " + API_key[0];
request2 = urllib.request.Request(str(API_key[0]));
response2 = urllib.request.urlopen(request2);
key_content = response2.read().decode('utf-8');
raw_stream_url = re.findall(r"Url\": \"(.*?)\"",key_content);
bandwidth = re.findall(r"Bandwidth\":(.*?),", key_content);
reliability = re.findall(r"lity\":(.*?),", key_content);
isPlaylist = re.findall(r"HasPlaylist\":(.*?),",key_content);
codec = re.findall(r"MediaType\": \"(.*?)\",", key_content);
tipe = re.findall(r"Type\": \"(.*?)\"", key_content);
total = 0
for element in raw_stream_url:
    total = total + 1
i = 0
print ("I found " + str(total) + " streams.");
for element in raw_stream_url:
    print ("Stream #" + str(i + 1));
    print ("Stream stats:");
    print ("Bandwidth: " + str(bandwidth[i]) + " kilobytes per second.");
    print ("Reliability: " + str(reliability[i]) + "%");
    print ("HasPlaylist: " + str(isPlaylist[i]));
    print ("Stream codec: " + str(codec[i]));
    print ("This audio stream is " + tipe[i].lower());
    print ("Pure streaming URL: " + str(raw_stream_url[i]));
i = i + 1
input("Press enter to close")

【讨论】:

  • 我必须将 http: 附加到 API 密钥:request2 = urllib.request.Request("http:%s" % API_key[0]);
【解决方案3】:

提供的答案对我不起作用。我正在添加另一个答案,因为这是我在搜索无线电流网址时最终到达的地方。

Radio Browser 是一个可搜索的网站,其中包含世界各地广播电台的流媒体网址:

http://www.radio-browser.info/

搜索 FIPPinguin RadioRadio Paradise 等电台,然后单击保存按钮,下载一个 PLS 文件,您可以在收音机 (Rhythmbox) 中打开该文件,或者以文本格式打开文件编辑器并复制 URL 以添加到 Goodvibes。

【讨论】:

    【解决方案4】:

    Shahar 的回答确实很有帮助,但我发现自己做这件事很乏味,所以我做了一个漂亮的 Python 小程序:

    import re
    import urllib2
    import string
    url1 = raw_input("Please enter a URL from Tunein Radio: ");
    open_file = urllib2.urlopen(url1);
    raw_file = open_file.read();
    API_key = re.findall(r"StreamUrl\":\"(.*?),",raw_file);
    #print API_key;
    #print "The API key is: " + API_key[0];
    use_key = urllib2.urlopen(str(API_key[0]));
    key_content = use_key.read();
    raw_stream_url = re.findall(r"Url\": \"(.*?)\"",key_content);
    bandwidth = re.findall(r"Bandwidth\":(.*?),", key_content);
    reliability = re.findall(r"lity\":(.*?),", key_content);
    isPlaylist = re.findall(r"HasPlaylist\":(.*?),",key_content);
    codec = re.findall(r"MediaType\": \"(.*?)\",", key_content);
    tipe = re.findall(r"Type\": \"(.*?)\"", key_content);
    total = 0
    for element in raw_stream_url:
        total = total + 1
    i = 0
    print "I found " + str(total) + " streams.";
    for element in raw_stream_url:
        print "Stream #" + str(i + 1);
        print "Stream stats:";
        print "Bandwidth: " + str(bandwidth[i]) + " kilobytes per second."
        print "Reliability: " + str(reliability[i]) + "%"
        print "HasPlaylist: " + str(isPlaylist[i]) + "."
        print "Stream codec: " + str(codec[i]) + "."
        print "This audio stream is " + tipe[i].lower() + "."
        print "Pure streaming URL: " + str(raw_stream_url[i]) + ".";
        i = i + 1
    raw_input("Press enter to close TMUS.")
    

    它基本上是 Shahar 的自动化解决方案。

    【讨论】:

    • 要将整个列表替换为 API_key = re.findall(r"StreamUrl\":\"(.*?),\"",raw_file) 我刚刚在正则表达式中添加了\"
    【解决方案5】:

    当您转到流 url 时,您会得到一个文件。将此文件提供给解析器以从中提取内容。该文件(通常)是纯文本并包含要播放的网址。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-12
      • 2021-06-25
      • 2021-06-29
      • 2014-03-17
      • 2012-03-23
      相关资源
      最近更新 更多