Android 3.0+上的实时视频流(HLS和RTSP / RTP)

问题描述 投票:2回答:2

我需要一些帮助在Android上开始使用HLS和RTSP。

为了测试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 videoSorry, this video cannot be played.在一个简单的测试应用程序(从问题17118的Android问题跟踪器下载:Android 3.1无法播放HTTP直播流),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在使用消息Prepare failed.: status=0x1准备时抛出IOException。

在3.0模拟器上的浏览器中,http地址会显示一个音频播放器,它会停止然后显示一个toast消息,说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 videoSorry, this video cannot be played。按Music,我得到,Couldn't play the track you requested.。同样,这个地址在iPad上运行良好。

任何帮助将非常感谢。

android video streaming rtsp http-live-streaming
2个回答
0
投票

无法帮助您使用RTSP协议。

对于HLS,我能够从Apple网站获取示例视频,使用针对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编写自己的播放器。你可能会尝试一些好的项目。海豚就是其中之一。

© www.soinside.com 2019 - 2024. All rights reserved.