如何播放 SoundCloud RTMP 流?
Posted
技术标签:
【中文标题】如何播放 SoundCloud RTMP 流?【英文标题】:How to play SoundCloud RTMP stream? 【发布时间】:2015-11-07 21:37:56 【问题描述】:我正在使用 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 流,而且我不知道如何搜索。
【问题讨论】:
你问的是如何构建一个RTMP流播放器?如果是这样,这个问题就太宽泛了。如果您要求使用场外资源(例如库)来播放 RTMP 流,那么该问题也属于题外话。 您提到您无法让 RTMP 工作;你能展示一下代码吗?当我们不得不猜测您写的内容时,很难为您提供帮助。 【参考方案1】:通常从 Flash Media Server、Wowza Media Server 和 Red5 服务器使用 RTMP 流。 您可以使用网页中的 Flash 对象播放该类型的流,例如: enter link description here
或者对于应用程序 - 您可以使用 ffplay 播放并使用 ffmpeg 转换为其他类型的流
【讨论】:
【参考方案2】:我一直在做同样的事情。它在 Dev 模式下使用 HTTP 协议播放,然后在正常浏览模式下恢复尝试使用 RTMP 协议(至少在 chrome 中)。这是我解决问题的方法.. 当您使用 sc.stream 请求时,它将返回要播放的对象。您可以在此对象发送给播放器之前对其进行编辑。 例如:
SC.stream('/tracks/'+playr.currentTrack.id).then(function (x)
x.options.protocols=["http"];
x.play();
如上所述设置协议对象参数会强制它使用正确的协议,如果您首先通过尝试在非开发模式下播放曲目来控制台记录它,您会看到它还包含 ["rtmp"] 协议,然后无法在chrome中播放。
【讨论】:
以上是关于如何播放 SoundCloud RTMP 流?的主要内容,如果未能解决你的问题,请参考以下文章