5

我有来自特定站点 (m.aveamuzik.com) 的 rtsp 音频流,可在浏览器中播放。当我尝试使用MediaPlayer类播放相同的流时,我得到MEDIA_ERROR_UNKNOWN(带有 extra= -2147483648)。该错误没有得到很好的记录,但稍微谷歌搜索表明它很可能是因为不受支持的媒体格式。

我的问题是,如果MediaPlayer类不支持某些格式,那么内置浏览器如何播放呢?另外,如何在我的代码中使用浏览器使用的相同机制,而不是MediaPlayer类?

编辑 1: @乔

我尝试了以下代码:

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(streamURL));
startActivity(intent);

MX PlayerBSPlayer显示为打开文件的选项,但与AudioPreviewActivity. 实际上,这很合理,因为我的 URL 是rtsp,但意图过滤器AudioPreviewActivity仅适用于httpfileURIcontent的类型。

4

2 回答 2

3

事实

浏览器设置了额外的功能,可以从页面中剥离视频源并在大多数时间在本机播放器中启动它。此功能未内置在 WebView 中,并且本机播放器非常挑剔需要将什么作为 URI 传递给它才能播放它。

自 Gingerbread 在默认的 android 浏览器中运行以来,它就可以工作。

可能的解释

您可能不会MediaPlayer像 android 浏览器那样使用它。发布一些代码以提供进一步的帮助。

进一步帮助

  • MediaPlayer4.0 之前有很多错误(修复了很多 RTSP 错误)。
  • W3C 描述的 Web 音频 API:链接
  • 以下是 Android 支持的所有媒体格式和协议的详细列表:链接
  • 测试页面:链接
  • 这篇完整的博文还帮助我了解了 Android 的媒体流:链接
于 2012-11-21T09:56:48.387 回答
1

如果它在浏览器中播放时看起来像另一个问题的屏幕截图,那么它应该是音乐应用程序中的AudioPreview Activity。

您应该能够通过简单地调用与清单startActivity()中的一个 IntentFilter 匹配的 Intent来启动它。

于 2012-11-21T22:44:30.713 回答