安卓缓存rtsp流_如何在Android推流端内置轻量级RTSP服务

大牛直播SDK推出内置轻量级RTSP服务,适用于内网超低延迟需求,如无纸化/电子教室。通过libSmartPublisher.so、SmartPlayerJniV2.java等库,提供InitRtspServer、OpenRtspServer等接口,实现延迟约200-400毫秒的RTSP流服务。
摘要由CSDN通过智能技术生成

为满足内网无纸化/电子教室等内网超低延迟需求,避免让用户配置单独的服务器,大牛直播SDK在推送端发布了轻量级RTSP服务SDK。

内置轻量级RTSP服务后,延迟更低,体验更好(内网环境下,200-400毫秒)。涉及相关库:libSmartPublisher.so

头文件:SmartPlayerJniV2.java SmartPublisherJniV2.java

Jar:smartavengine.jar

以下是接口详解:

Android内置轻量级RTSP服务SDK接口详解SmartRTSPServerSDK

初始化RTSP Server

InitRtspServer

Init rtsp server(和UnInitRtspServer配对使用,即便是启动多个RTSP服务,也只需调用一次InitRtspServer,请确保在OpenRtspServer之前调用)

创建一个rtsp server

OpenRtspServer

创建一个rtsp server,返回rtsp server句柄

设置端口

SetRtspServerPort

设置rtsp server 监听端口, 在StartRtspServer之前必须要设置端口

设置鉴权用户名、密码

SetRtspServerUserNamePassword

设置rtsp server 鉴权用户名和密码, 这个可以不设置,只有需要鉴权的再设置

获取rtsp server当前会话数

GetRtspServerClientSessionNumbers

获取rtsp server当前的客户会话数, 这个接口必须在StartRtspServer之后再调用

启动rtsp server

StartRtspServer

停止rtsp server

StopRtspServer

关闭rtsp server

CloseRtspServer

UnInit rtsp server

UnInitRtspServer:UnInit rtsp server(和InitRtspServer配对使用,即便是启动多个RTSP服务,也只需调用一次UnInitRtspServer)

2. SmartRTSPServerSDK供Publisher调用的接口

设置rtsp的流名称

SetRtspStreamName:设置rtsp的流名称

给要发布的rtsp流设置rtsp server

AddRtspStreamServer:给要发布的rtsp流设置rtsp server, 一个流可以发布到多个rtsp server上,rtsp server的创建启动请参考OpenRtspServer和StartRtspServer接口

清除设置的rtsp server

ClearRtspStreamServer:清除设置的rtsp server

启动rtsp流

StartRtspStream:启动rtsp流

停止rtsp流

StopRtspStream:停止rtsp流

3. Android对应接口:

/*+++++++++++++++内置轻量级RTSP服务SDK+++++++++++++++*/

/*+++++++++++++++SmartRTSPServerSDK+++++++++++++++*/

/** Init rtsp server(和UnInitRtspServer配对使用,即便是启动多个RTSP服务,也只需调用一次InitRtspServer,请确保在OpenRtspServer之前调用)** @param ctx: get by this.getApplicationContext()** @return {0} if successful*/

public native int InitRtspServer(Object ctx);

/** 创建一个rtsp server** @param reserve:保留参数传0** @return rtsp server 句柄*/

public native long OpenRtspServer(int reserve);

/** 设置rtsp server 监听端口, 在StartRtspServer之前必须要设置端口** @param rtsp_server_handle: rtsp server 句柄** @param port: 端口号,可以设置为554,或者是1024到65535之间,其他值返回失败** @return {0} if successful*/

public native int SetRtspServerPort(long rtsp_server_handle, int port);

/** 设置rtsp server 鉴权用户名和密码, 这个可以不设置,只有需要鉴权的再设置** @param rtsp_server_handle: rtsp server 句柄** @param user_name: 用户名(必须是英文)** @param password:密码(必须是英文)** @return {0} if successful*/

public native int SetRtspServerUserNamePassword(long rtsp_server_handle, String user_name, String password);

/** 获取rtsp server当前的客户会话数, 这个接口必须在StartRtspServer之后再调用** @param rtsp_server_handle: rtsp server 句柄** @return {当前rtsp server会话数}*/

public native int GetRtspServerClientSessionNumbers(long rtsp_server_handle);

/** 启动rtsp server** @param rtsp_server_handle: rtsp server 句柄** @param reserve: 保留参数传0** @return {0} if successful*/

public native int StartRtspServer(long rtsp_server_handle, int reserve);

/** 停止rtsp server** @param rtsp_server_handle: rtsp server 句柄** @return {0} if successful*/

public native int StopRtspServer(long rtsp_server_handle);

/** 关闭rtsp server** @param rtsp_server_handle: rtsp server 句柄** NOTE: 调用这个接口之后rtsp_server_handle失效,** @return {0} if successful*/

public native int CloseRtspServer(long rtsp_server_handle);

/** UnInit rtsp server(和InitRtspServer配对使用,即便是启动多个RTSP服务,也只需调用一次UnInitRtspServer)** @return {0} if successful*/

public native int UnInitRtspServer();

/*---------------SmartRTSPServerSDK---------------*/

/*+++++++++++++++SmartRTSPServerSDK供Publisher调用的接口+++++++++++++++*/

/** 设置rtsp的流名称** @param handle: 推送实例句柄** @param stream_name: 流程名称,不能为空字符串,必须是英文** 这个作用是: 比如rtsp的url是:rtsp://192.168.0.111/test, test就是设置下去的stream_name** @return {0} if successful*/

public native int SetRtspStreamName(long handle, String stream_name);

/** 给要发布的rtsp流设置rtsp server, 一个流可以发布到多个rtsp server上,rtsp server的创建启动请参考OpenRtspServer和StartRtspServer接口** @param handle: 推送实例句柄** @param rtsp_server_handle:rtsp server句柄** @param reserve:保留参数,传0** @return {0} if successful*/

public native int AddRtspStreamServer(long handle, long rtsp_server_handle, int reserve);

/** 清除设置的rtsp server** @param handle: 推送实例句柄** @return {0} if successful*/

public native int ClearRtspStreamServer(long handle);

/** 启动rtsp流** @param handle: 推送实例句柄** @param reserve: 保留参数,传0** @return {0} if successful*/

public native int StartRtspStream(long handle, int reserve);

/** 停止rtsp流** @param handle: 推送实例句柄** @return {0} if successful*/

public native int StopRtspStream(long handle);

/*---------------SmartRTSPServerSDK供Publisher调用的接口---------------*/

/*---------------内置轻量级RTSP服务SDK---------------*/

一: 使用javacv来实现,最终也是用过ffmpeg来进行编码和推流,javacv实现到可以直接接收摄像头的帧数据 需要自己实现的代码只是打开摄像头,写一个SurfaceView进行预览,然后实现PreviewCallback将摄像头每一帧的数据交给javacv即可 javacv地址:https://github.com/bytedeco/javacv demo地址:https://github.com/beautifulSoup/RtmpRecoder/tree/master 二: 使用Android自带的编码工具,可实现硬编码,这里有一个国内大神开源的封装很完善的的库yasea,第一种方法需要实现的Camera采集部分也一起封装好了,进行一些简单配置就可以实现编码推流,并且yasea目前已经直接支持摄像头的热切换,和各种滤镜效果 yasea地址(内置demo):https://github.com/begeekmyfriend/yasea 服务媒体服务器我用的是srs,项目地址:https://github.com/ossrs/srs 关于srs的编译、配置、部署、在官方wiki中已经写的很详细了,并且srs同样是国内开发人员开源的项目,有全中文的文档,看起来很方便 这里有最基本的简单编译部署过程 Android直播实现(二)srs媒体服务器部署 播放器 android的播放使用vitamio,还是国内的开源播放器,是不是感觉国内的前辈们越来越屌了^~^! vitamio支持几乎所有常见的的视频格式和媒体协议 vitamio地址(内置demo):https://github.com/yixia/VitamioBundle 这里使用的是yaesa库,先介绍一下直播实现的程:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值