在Android设备上实现RTP流媒体播放器



我必须开发一个应用程序,从服务器流式传输RTP视频流,并在我的android设备上播放。我还必须在另一台安卓设备上创建一个rtp服务器,这个客户端应用程序将从该服务器流式传输视频。

但是,我发现Rtp流很难直接播放(没有RTSP)。我如何在android/java中实现这样一个播放器。

我知道维塔米奥,但我怀疑它是否能打rtp

如果我错了,请纠正我,我真的需要一些帮助。

您可以使用URI包读取视频流,请尝试播放RTSP视频流,如下所示:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    final VideoView vidView = (VideoView)findViewById(R.id.myVideo);
    MediaController vidControl = new MediaController(this);
    vidControl.setAnchorView(vidView);
    vidView.setMediaController(vidControl);
    vidView.setVideoPath("rtsp://184.72.239.149/vod/mp4:BigBuckBunny_175k.mov");
    vidView.start();
 }

MediaPlayer类可以直接播放RTSP,因此不必开发客户端。对于服务器,可以实现RTSP,也可以使用一些实现RTSP的库。如果您不需要同时支持许多客户端,那么这相对容易。

另一个选项是使用ExoPlayer。实际上,ExoPlayer的当前官方版本不支持RTSP/RTP。但正如问题55中所指出的,有一个活动的拉取请求#3854来添加此支持。

同时,您可以克隆支持RTSP(分支dev-v2-RTSP)的原始作者外部层分叉:

git clone -b dev-v2-rtsp https://github.com/tresvecesseis/ExoPlayer.git.

我测试过了,效果很好。作者们正在积极解决许多用户报告的问题,我希望RTSP/RTP支持在某个时候成为官方外部层的一部分。

最新更新