我需要一些帮助才能开始在 Android 上使用 HLS 和 RTSP。
为了测试 RTSP,我正在运行 LIVE555 媒体服务器。服务器有从 live555.com 下载的 bibpop-gear1-all.ts 示例文件和索引文件。所以我的 URL 只是 [http://(myIP):80/bipbop-gear1-all.ts](http://(myIP) :80/bibpbop-gear1-all.ts) 在 Android 3.0 模拟器上,浏览器会显示几分钟的下载进度,然后什么也没有。浏览器窗口中没有更新,没有 Android 下载通知。它只是停止。
在 Android 3.2.1 设备上,它会启动视频播放器,但会立即显示 Cannot play video
, Sorry, this video cannot be played.
在一个简单的测试应用程序中(从 Android 问题跟踪器下载问题 17118:Android 3.1 无法播放 HTTP Live Streaming ),MediaPlayer.prepare() 短暂地访问服务器,并立即抛出带有消息 Prepare failed.: status=0x1
的 IOException。 Logcat 还显示, error (1, -2147483648)
。
同一个测试应用程序可以毫无问题地播放本地 mp4,所以我相信这很好。在 iPad 上,相同的 URL 播放视频,至少证明我的服务器是好的。
为了测试 HTTP 实时流 (HLS),我使用了 apple.com 提供的 bipbop 示例: http://devimages.apple.com/iphone/samples/bipbop/gear1/prog_index.m3u8 httplive://devimages.apple.com/iphone/samples/bipbop/gear1/prog_index.m3u8
在 Android 3 模拟器中,示例应用程序开始使用“httplive”协议播放地址,但它挂起。使用“http”协议,在 MediaPlayer.start() 之后,它会挂起片刻,但没有显示任何内容。然后logcat显示:
W/AudioSystem(715): AudioFlinger server died!
W/IMediaDeathNotifier(715): media server died
E/MediaPlayer(715): error (100, 0)
E/MediaPlayer(715): Error (100,0)
并且我的 onCompletion() 处理程序被调用。
在真正的 3.2.1 设备上,使用 http 协议的应用程序的行为与在 3.0 模拟器上的行为相同。 httplive 在准备时抛出一个 IOException 并带有消息 Prepare failed.: status=0x1
。
在 3.0 模拟器上的浏览器中,http 地址会打开一个音频播放器,该播放器会停止,然后显示一条 toast 消息,内容为 Sorry, the player does not support this type of audio file
。 httplive 地址只是去谷歌搜索。
在真正的 3.2.1 设备上的浏览器中,http 地址会弹出一个对话框, Complete action using
,其中包含以下选项: Music
和 Video player
。按 Video player
,我得到 Cannot play video
, Sorry, this video cannot be played
。按 Music
,我得到 Couldn't play the track you requested.
。同样,此地址在 iPad 上运行良好。
任何帮助将不胜感激。
无法帮助您使用 RTSP 协议。
对于 HLS,我能够从 Apple 网站获取示例视频,该视频使用针对 2.3.4 和 3.0 构建的简单应用程序。