我正在使用SoundCloud公共API在带有JavaScript SDK 3.0.0的SC服务器的浏览器中播放音频。初始化之后,我设法使用SC.Stream方法获取带有特定轨道的流URL的JSON。
{
"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 :(得分:0)
通常,RTMP流用于Flash Media Server,Wowza Media Server和Red5服务器。 您可以使用网页中的flash对象播放该类型的流,如: enter link description here
或者对于应用程序 - 您可以使用 ffplay 进行游戏,并使用 ffmpeg
转换为其他类型的流答案 1 :(得分:0)
我一直在做同样的事情。它在开发模式下使用HTTP协议播放,然后恢复为在正常浏览模式下尝试使用RTMP协议(至少在chrome中)。这是我如何解决这个问题.. 当您使用sc.stream请求时,它将返回要播放的对象。您可以在将此对象发送到播放器之前对其进行编辑。 例如:
SC.stream('/tracks/'+playr.currentTrack.id).then(function (x) {
x.options.protocols=["http"];
x.play();}
如上所述设置协议对象参数会强制它使用正确的协议,如果您通过尝试在非开发模式下播放轨道来首先登录它,您会看到它还包含[“rtmp”]协议,然后没有玩铬。