通过 monotouch 播放 .m3u8 音频流文件

Posted

技术标签:

【中文标题】通过 monotouch 播放 .m3u8 音频流文件【英文标题】:Playing .m3u8 audio stream file through monotouch 【发布时间】:2012-04-16 06:00:30 【问题描述】:

我目前正在开发一个流式传输音频的 iPhone 应用程序。我希望流式传输的 URL 是一个 m3u8 文件,位于以下链接:

http://216.246.37.52:1935/highveld/highveld.stream/playlist.m3u8

我可以将 NSRequest 加载到将打开流的 web 视图上,但这会将我的应用程序推到后台,当它打开流时,返回应用程序的唯一方法是关闭流。

我希望我的视图上有一个播放按钮,当点击它时它将开始播放流,并且用户应该能够在应用程序中切换选项卡而无需停止流。

本质上,流应该继续播放,直到用户故意停止它。如果有人能给我任何关于如何在 MonoTouch 和 C# 中为 iPhone 应用程序执行此操作的任何想法,或者向我指出一个教程,那就太好了。我搜索了谷歌,但无济于事。

【问题讨论】:

您的困惑是认为.m3u8 文件与流有任何关系。 .m3u8 文件只不过是一个播放列表。您需要搜索的是通过 HTTP 流式传输,可能在 MP3 中,但我不确定,因为播放列表中的链接已损坏。 感谢@Brad。我在记事本中打开了播放列表,我得到的只是:#EXTM3U #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=250000 216.246.37.52:1935/jacaranda-bkp/… 我不是但是,如果您获取帖子中所述的链接并将其输入到 Safari 中的 iPhone 中,请确定如何处理,链接将打开并且流开始播放。有没有这方面的cmets? 是的,这就是应该发生的事情。同样,M3U 只是一个播放列表文件,其中包含媒体的 URL。如果直接打开 URL,则直接打开媒体。在您的情况下,浏览器将 Content-Type 标头视为其媒体播放器可以处理的内容,因此它开始播放它。 @Brad,如果媒体播放器将流视为可以处理的东西,那么在单点触控中使用媒体播放器会不会工作?使用 MonoTouch.MediaPlayer;示例: var moviePlayer = new MPMoviePlayerController (new NSUrl ("216.246.37.52:1935/highveld/highveld.stream/playlist.m3u8")); moviePlayer.Play (); 我已经尝试过了,当我这样做时流并没有开始播放。它只是坐在那里。我在做什么有什么问题吗?也许我应该在使用此方法时使用播放列表文件中的流 url?我已将帖子中的流更新为有效的流。 @Jonathan.Peppers 感谢您的意见。这是我目前的解决方案。如果一切都失败了,我将不得不这样做。这个解决方案的问题是,当流打开时,它会将应用程序推送到我不想要的后台。 【参考方案1】:

@约阿希姆。我还构建了一个流解决方案,并以不同的方式完成了这一点。经过一番探索,我在http://216.246.37.52:8028/ 找到了实际的 Shoutcast 流。不确定这是否会对您的情况有所帮助。也许您可以生成自己的播放列表。祝你好运!。瑞安

【讨论】:

谢谢。您是如何设法找到流的端口号的?你是如何在你的流媒体应用中实现这一点的?你能提供我的应用程序名称,以便我查看吗?谢谢

以上是关于通过 monotouch 播放 .m3u8 音频流文件的主要内容,如果未能解决你的问题,请参考以下文章

无需快速时间的 iPhone M3U 音频流

在播放 iOS 时从 HLS 流(视频)中提取/录制音频

m3u8格式的视频文件怎么转成Mp4在电脑上播放?

如何使用 CloudFront 从 AWS S3 安全地播放 .m3u8 流文件?

Monotouch 停止播放音频剪辑

HTML5视频Video 音频Audio