如何播放 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 流?的主要内容,如果未能解决你的问题,请参考以下文章

Android:如何将 rtmp 流地址发送到外部视频播放器(例如 MX 播放器)

如何使用videojs播放rtmp直播流?

如何推送和播放RTMP H265流 (RTMP HEVC)

如何使用 JW Player 播放 rtmp 流?

Unity下如何实现RTMP或RTSP流播放和录制

如何拉取公网RTSP/RTMP流在内网多客户端播放