我使用SoundCloud公共API在浏览器中通过JavaScript SDK3.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流,也不知道如何搜索。
发布于 2015-11-10 05:50:04
RTMP流通常来自Flash Media Server、Wowza Media server和Red5 Server。你可以在你的网页中使用flash对象来播放这种类型的流,比如:enter link description here
或者对于应用程序-您可以使用ffplay播放,并使用ffmpeg转换为其他类型的流
发布于 2017-03-23 19:50:24
我一直在做同样的事情。它在Dev模式下使用HTTP协议播放,然后在正常浏览模式下尝试使用RTMP协议(至少在chrome中是这样)。下面是我是如何解决这个问题的。当你使用sc.stream请求时,它会返回要播放的对象。您可以在将此对象发送给播放器之前对其进行编辑。例如:
SC.stream('/tracks/'+playr.currentTrack.id).then(function (x) {
x.options.protocols=["http"];
x.play();}
如上所述设置协议对象参数会强制它使用正确的协议,如果你首先通过控制台登录,尝试在非开发模式下播放曲目,你会看到它也包含"rtmp“协议,然后无法在chrome中播放。
https://stackoverflow.com/questions/33588082
复制相似问题