2015-11-07 164 views
0

我正在使用SoundCloud公共API从具有JavaScript SDK 3.0.0的SC服务器在浏览器中播放音频。在初始化之后,我设法通过SC.Stream方法获得了具有特定曲目流URL的JSON。如何播放SoundCloud RTMP流?

{ 
    "http_mp3_128_url":"https://cf-media.sndcdn.com/a6QC6Zg3YpKz.128.mp3...” , 
    "hls_mp3_128_url":"htt...//ec-hls-media.soundcloud.com/playlist/a6QC6Zg3YpKz.128.mp3/...” , 
    "rtmp_mp3_128_url":"rtmp://ec-rtmp-media.soundcloud.com/mp3:a6QC6Zg3YpKz.128?...", 
    "preview_mp3_128_url":"htt....../ec-preview-media.sndcdn.com/preview/0/90/a6QC6Zg3YpKz.128.mp3?..." 
} 

其中有一个HTTP,一个HLS和一个RTMP URL。我可以处理HTTP,但我无法使RTMP正常工作。有谁知道它是如何决定将播放哪个流?我怎么操纵这个?或者我如何访问RTMP流?

几个星期前,我用WireShark检查了SoundCloud通过RTMP交付,但现在我似乎无法捕获任何RTMP流,我不知道如何搜索一个。

+0

你问如何建立一个RTMP流播放器?如果是这样,这个问题太广泛了。如果您要求使用非现场资源(例如图书馆)播放RTMP流,那么这个问题也是无关紧要的。 – JAL

+0

您提到您无法使RTMP正常工作;你能为此展示代码吗?当我们必须猜测你写的内容时,很难帮助你。 – Mogsdad

回答

0

通常从Flash Media Server,Wowza Media Server和Red5服务器使用RTMP流。 您可以在网页上播放使用闪光灯对象类型的流,如: enter link description here

或者应用程序 - 你可以用ffplay播放和转换为其他类型的流与ffmpeg的

0

我一直在做同样的事情。它在Dev模式下使用HTTP协议播放,然后恢复为在正常浏览模式下尝试使用RTMP协议(至少在Chrome中是这样)。以下是我如何解决问题。 当您使用sc.stream请求时,它将返回要播放的对象。您可以在发送给播放器之前编辑此对象。 例如:

SC.stream('/tracks/'+playr.currentTrack.id).then(function (x) { 

x.options.protocols=["http"]; 

x.play();} 

设置协议对象参数如上强制其使用正确的协议,如果你安慰首先试图播放非开发模式中的磁道记录它你会看到它也包含[“rtmp”]协议,然后无法在Chrome中播放。