【发布时间】:2012-10-07 06:12:46
【问题描述】:
我正在为我们的蓝调俱乐部创建一个智能手机/平板电脑应用程序,为了让我配置应用程序来播放我们的音乐,它需要一个流式音频的 URL。我想从我的一个 SoundCloud 集流式传输歌曲。
如何找到音频流的 URL?
【问题讨论】:
标签: android ios audio-streaming tablet
我正在为我们的蓝调俱乐部创建一个智能手机/平板电脑应用程序,为了让我配置应用程序来播放我们的音乐,它需要一个流式音频的 URL。我想从我的一个 SoundCloud 集流式传输歌曲。
如何找到音频流的 URL?
【问题讨论】:
标签: android ios audio-streaming tablet
没有指向您的 SoundCloud 集的 URL。
听起来您指的是一个普通的流 URL,通常是您将 URL 提供给 SHOUTcast/Icecast/HTTP 流的地方。 SoundCloud 资源在单独的文件中提供,因此您无需使用单个 URL。
然而,一切都没有丢失。如果您想将您的应用程序与 SoundCloud 集成,可以使用 API。你可以在这里找到更多信息:http://developers.soundcloud.com/blog/stream-and-download
【讨论】:
使用像 Bash 这样的语言很容易做到。下面是一个简单的例子,它打印了一组歌曲的所有流媒体 URL 和标题:
#!/bin/bash
ORIGINAL_PAGE="$(echo "$1" | sed 's|https|http|')"
SOURCE="$(curl -s "$ORIGINAL_PAGE")"
SONG_URLS="$(echo "$SOURCE" | grep -oE "(uri\":\"/[^/]*/[^/\"]*\"|href=\"/[^/]*/[^/]*/\?size=large\")" | sed 's|/\?size=large||' | tr '=' '"' | cut -d\" -f3 | sed -e "s|^|http://soundcloud.com|" -e 's|$|/?size=medium|')"
if [ -z "$SONG_URLS" ]; then
printf "No songs were found at: $ORIGINAL_PAGE\n"
exit 1
fi
SONG_COUNT=$(echo "$SONG_URLS" | wc -l)
for (( SONG_ID=1; SONG_ID <= SONG_COUNT; SONG_ID+=1 )); do
SONG_URL="$(echo "$SONG_URLS" | sed -n "$SONG_ID"p)"
SET_SONG_PAGE_SOURCE="$(curl -s "$SONG_URL")"
SONG_TITLE="$(echo "$SET_SONG_PAGE_SOURCE" | grep -o "title\":.*\",\"commentable\"" | sed 's|title\":\"||;s|\",\"commentable\"||' | head -1)"
STREAM_URL="$(echo "$SET_SONG_PAGE_SOURCE" | grep -o "http://media.soundcloud.com/stream/[^\"<]*\?stream_token=[^\"<]*" | head -1)"
echo "$STREAM_URL#$SONG_TITLE"
done
我不确定这是否会对您有所帮助,但也许会。祝你好运。
【讨论】: