我正在尝试在Ruby on Rails应用程序中使用JPlayer来流式传输SoundCloud歌曲。我尝试在服务器端使用下面的代码获取流url:
@stream_url = client.get(@track.stream_url, :allow_redirects => true)
然后我尝试使用JPlayer加载这个网址,如下所示:
<script type="text/javascript">
$("#jquery_jplayer_1").jPlayer({
ready: function() {
$(this).jPlayer("setMedia", {
mp3: "<%= @stream_url %>"
});
},
swfPath: "/js",
supplied: "mp3"
});
</script>
但是当我加载页面时,浏览器会阻塞URL字符串。返回的标记和脚本如下所示:
$(this).jPlayer("setMedia", {
mp3: "���DInfo+4F��!$&)+.0368;=@..."
这个字符串持续的时间比我在这里发布的时间长得多。
我最好的猜测是这是一个编码问题,但我不能弄清楚。我尝试过在rails控制台中进行调试,但毫无结果。
任何想法都将不胜感激。谢谢!
发布于 2014-04-28 20:30:31
看起来你正面临着一些编码问题。
当我手动发送HTTP请求并在C#中获取端点URL时,我不会遇到同样的问题,并且音频的端点URL是完全正确的。
public void Run()
{
if (!string.IsNullOrEmpty(TrackUrl))
{
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(TrackUrl + ".json?client_id=YOUR_CLIENT_ID");
request.Method = "HEAD";
request.AllowReadStreamBuffering = true;
request.AllowAutoRedirect = true;
request.BeginGetResponse(new AsyncCallback(ReadWebRequestCallback), request);
}
}
private void ReadWebRequestCallback(IAsyncResult callbackResult)
{
HttpWebRequest myRequest = (HttpWebRequest)callbackResult.AsyncState;
HttpWebResponse myResponse = (HttpWebResponse)myRequest.EndGetResponse(callbackResult);
using (StreamReader httpwebStreamReader = new StreamReader(myResponse.GetResponseStream()))
{
this.AudioStreamEndPointUrl = myResponse.ResponseUri.AbsoluteUri;
this.SearchCompleted(this);
}
myResponse.Close();
}
我不知道它是如何应用于Ruby on Rails的,但是你已经明白了。您可以尝试与此类似的技巧,而不是使用client.get方法。
https://stackoverflow.com/questions/22545763
复制相似问题