使用live555实时播放rtsp

本文介绍了如何使用live555库在Android上实现rtsp流媒体的实时播放,解决了MediaPlayer延时问题。通过搭建live555框架,跑通rtsp客户端流程,接收并处理视频数据,最后将h264帧回调到Java层,实现rtsp视频帧的实时接收。
摘要由CSDN通过智能技术生成

      Android原生的MediaPlayer虽然也可以播放rtsp流媒体,可是却有几秒的延时,不符合实时的要求。于是需要使用第三方库live555来解决这个问题。

 

1、搭建live555框架

 

      我们先下载源码,然后在eclipse里创建一个新的library工程,在工程jni下创建一个live目录,然后将源码拷贝过来。之后在jni下新建一个Android.mk和Application.mk。

 

图Android.mk


 

图Application.mk

 

 

2、跑通rtsp client流程

 

      分析源码,我们先将testRTSPClient.cpp从jni/live/testProgs里拷贝出来,放到jni下, 然后新建一个jni_interface.h。


图jni_interface.h

 

      Java_com_live555_ctl_liveRtsp_start、Java_com_live555_ctl_liveRtsp_dosometing这两个接口我们将在testRTSPClient.cpp里实现。

 

      在Java_com_live555_ctl_liveRtsp_start里我们根据传过来的url和progName调用openURL,然后调起主循环doEventLoop。 这个时候,我们可以跑通rtsp client的流程,可以连接server了,可是,接收到的视频数据还没有做处理。

 

3、接收处理视频数据

 

      在live555的架构里,要说明一下Sink  source,这两者的概念及关系:

      liveMedia库中Sink就是消费数据的对象,比如把接收到的数据存储到文件,这个文件就是一个Sink。 Source就是生产数据的对象,比如通过 RTP读取数据。数据流经过多个source和sinks。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值