在 android 上播放 RTSP 流

Posted

技术标签:

【中文标题】在 android 上播放 RTSP 流【英文标题】:Play RTSP streaming on android 【发布时间】:2013-01-29 02:16:54 【问题描述】:

我有一个 RTSP 源,我想在我的 android 应用上播放它,但它播放 2 或 3 分钟并且不能播放更长时间:(

我怎样才能玩得更久?

// there is my code to play, thanks for advice!
// videoview is my VideoView on layout
    videoview.setVideoURI(Uri.parse("rtsp://192.168.0.119/Bolt.ts"));   
    videoview.setMediaController(new MediaController(this));    
    videoview.requestFocus();   
    videoview.start();

感谢您的帮助!

【问题讨论】:

向我们展示代码,否则您将得不到任何帮助。 2-3 分钟后会发生什么?您是否尝试过播放不同的视频? 不,2-3分钟后,它停止,无法继续播放 LogCat 中有错误信息吗? 【参考方案1】:

可能不完全支持您的视频编码,我建议使用本机播放器是另一个不错的解决方案 用于播放 RTSP。

mediaURL = "rtsp://192.168.0.119/Bolt.ts"
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(mediaURL));
startActivity(intent); 

更新:

好的,如果您不想播放其他应用,您的解决方案是正确的

videoview.setVideoURI(Uri.parse("rtsp://192.168.0.119/Bolt.ts"));   
videoview.setMediaController(new MediaController(this));    
videoview.requestFocus();   
videoview.start();

但我很确定导致您的视频停止的原因是流中使用的编解码器可能在您的设备上不完全支持。

我建议使用:H.264 for videoAAC for audio

【讨论】:

我不想用别的应用玩【参考方案2】:

标准的 Android MediaPlayer 似乎没有向 RTSP 流媒体服务器发回保持活动消息。因此,流媒体服务器终止连接。

一种解决方法是使用不同类型的 MediaPlayer: - ExoPlayer(来自 Google) - Vitamino(注意许可问题,不是很清楚) - LibVlc

就个人而言,我使用了 LibVlc,它运行良好。你可以在这里找到一些例子: https://bitbucket.org/edwardcw/libvlc-android-sample

【讨论】:

ExoPlayer still 还不支持 RTSP。 github.com/google/ExoPlayer/issues/55

以上是关于在 android 上播放 RTSP 流的主要内容,如果未能解决你的问题,请参考以下文章

android 怎么播放rtsp流

在 Android 应用程序中播放 RTSP 流

在 Android 中播放 RTSP 流视频时如何保持宽高比?

如何使用 videoview 播放带有身份验证的 rtsp 流?

如何在 wowza 上使用 rtsp 播放流?

在网站上嵌入 VLC 插件以播放 RTSP 流