2012-01-20 148 views
2

我需要一些帮助开始使用Android上的HLS和RTSP。Android 3.0+(HLS和RTSP/RTP)上的实况视频流播放

要测试RTSP,我正在运行LIVE555媒体服务器。该服务器具有从live555.com下载的bipbop-gear1-all.ts示例文件和索引文件。所以我的网址只是http://(myIP):80/bipbop-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实时流播放) MediaPlayer.prepare()短暂地命中服务器,并立即抛出IOException,并显示消息Prepare failed.: status=0x1。 Logcat还显示,error (1, -2147483648)

相同的测试应用程序播放本地mp4没有问题,所以我认为这很好。在iPad上,同一个URL播放视频,至少证明我的服务器是好的。

要测试HTTP实时流(HLS),我使用的是bipbop样品在送达apple.com: 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在准备消息Prepare failed.: status=0x1时抛出IOException。

在3.0模拟器的浏览器中,http地址会显示一个音频播放器,该播放器会停止并显示烤面包信息Sorry, the player does not support this type of audio file。 httplive地址只是进入Google搜索。

在真实3.2.1设备的浏览器中,http地址会弹出一个对话框Complete action using,其选项为:MusicVideo player。按Video player,我得到,Cannot play video,Sorry, this video cannot be played。按Music,我得到,Couldn't play the track you requested.。再次,这个地址在iPad上运行良好。

任何帮助将非常感激。

回答

0

无法帮助您使用RTSP协议。

对于HLS,我能够从苹果网站获得示例视频,使用一个构建在2.3.4和3.0上的简单应用程序。

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    mMediaController = new MediaController(this); 
    mVideoView = (VideoView)findViewById(R.id.video_view); 
    mVideoView.setVideoPath(mVideoPath); 
    mVideoView.setMediaController(mMediaController); 
    mVideoView.setOnPreparedListener(new OnPreparedListener() { 

     @Override 
     public void onPrepared(MediaPlayer mp) { 
      // TODO Auto-generated method stub 
      mp.start(); 
     } 
    }); 
} 
0

RTSP应该在Android上得到支持,但似乎被打破,我最近有玩RTSP流和最终使用的ffmpeg写我自己的球员。有一些你可能会尝试的好项目。海豚是一个。