【发布时间】: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 感谢您的意见。这是我目前的解决方案。如果一切都失败了,我将不得不这样做。这个解决方案的问题是,当流打开时,它会将应用程序推送到我不想要的后台。
标签: c# iphone ios xamarin.ios audio-streaming