如何在Android推流端内置轻量级RTSP服务

简介: 为满足内网无纸化/电子教室等内网超低延迟需求,避免让用户配置单独的服务器,大牛直播SDK在推送端发布了轻量级RTSP服务SDK。内置轻量级RTSP服务后,延迟更低,体验更好(内网环境下,200-400毫秒)。

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


内置轻量级RTSP服务后,延迟更低,体验更好(内网环境下,200-400毫秒)。


  1. 涉及相关库:libSmartPublisher.so


  1. 头文件:SmartPlayerJniV2.java SmartPublisherJniV2.java


  1. Jar:smartavengine.jar


以下是接口详解:


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


  1. 以下是接口详解:

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

调用描述

接口

接口描述

常规功能

Android RTMP推送端所有功能依然有效,亦可同时推送RTMP

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

停止rtsp server

StopRtspServer

停止rtsp server

关闭rtsp server

CloseRtspServer

关闭rtsp server

UnInit rtsp server

UnInitRtspServer

UnInit rtsp server(和InitRtspServer配对使用,即便是启动多个RTSP服务,也只需调用一次UnInitRtspServer)
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流

2. 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---------------*/


相关文章
|
23天前
|
程序员 开发工具 Android开发
Android|使用阿里云推流 SDK 实现双路推流不同画面
本文记录了一种使用没有原生支持多路推流的阿里云推流 Android SDK,实现同时推送两路不同画面的流的方法。
44 7
|
27天前
|
安全 Java 网络安全
Android远程连接和登录FTPS服务代码(commons.net库)
Android远程连接和登录FTPS服务代码(commons.net库)
22 1
|
2月前
|
安全 API 开发工具
Android平台RTMP推送|轻量级RTSP服务如何实现麦克风|扬声器声音采集切换
Android平台扬声器播放声音的采集,在无纸化同屏等场景下,意义很大,早期低版本的Android设备,是没法直接采集扬声器audio的(从Android 10开始支持),所以,如果需要采集扬声器audio,需要先做系统版本判断,添加相应的权限。
|
2月前
|
编解码 开发工具 Android开发
Android平台实现屏幕录制(屏幕投影)|音频播放采集|麦克风采集并推送RTMP或轻量级RTSP服务
Android平台屏幕采集、音频播放声音采集、麦克风采集编码打包推送到RTMP和轻量级RTSP服务的相关技术实现,做成高稳定低延迟的同屏系统,还需要有配套好的RTMP、RTSP直播播放器
|
5天前
|
搜索推荐 Android开发 开发者
探索安卓开发中的自定义视图:打造个性化UI组件
【10月更文挑战第39天】在安卓开发的世界中,自定义视图是实现独特界面设计的关键。本文将引导你理解自定义视图的概念、创建流程,以及如何通过它们增强应用的用户体验。我们将从基础出发,逐步深入,最终让你能够自信地设计和实现专属的UI组件。
|
7天前
|
Android开发 Swift iOS开发
探索安卓与iOS开发的差异和挑战
【10月更文挑战第37天】在移动应用开发的广阔舞台上,安卓和iOS这两大操作系统扮演着主角。它们各自拥有独特的特性、优势以及面临的开发挑战。本文将深入探讨这两个平台在开发过程中的主要差异,从编程语言到用户界面设计,再到市场分布的不同影响,旨在为开发者提供一个全面的视角,帮助他们更好地理解并应对在不同平台上进行应用开发时可能遇到的难题和机遇。
|
9天前
|
XML 存储 Java
探索安卓开发之旅:从新手到专家
【10月更文挑战第35天】在数字化时代,安卓应用的开发成为了一个热门话题。本文旨在通过浅显易懂的语言,带领初学者了解安卓开发的基础知识,同时为有一定经验的开发者提供进阶技巧。我们将一起探讨如何从零开始构建第一个安卓应用,并逐步深入到性能优化和高级功能的实现。无论你是编程新手还是希望提升技能的开发者,这篇文章都将为你提供有价值的指导和灵感。
|
7天前
|
存储 API 开发工具
探索安卓开发:从基础到进阶
【10月更文挑战第37天】在这篇文章中,我们将一起探索安卓开发的奥秘。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的信息和建议。我们将从安卓开发的基础开始,逐步深入到更复杂的主题,如自定义组件、性能优化等。最后,我们将通过一个代码示例来展示如何实现一个简单的安卓应用。让我们一起开始吧!
|
8天前
|
存储 XML JSON
探索安卓开发:从新手到专家的旅程
【10月更文挑战第36天】在这篇文章中,我们将一起踏上一段激动人心的旅程,从零基础开始,逐步深入安卓开发的奥秘。无论你是编程新手,还是希望扩展技能的老手,这里都有适合你的知识宝藏等待发掘。通过实际的代码示例和深入浅出的解释,我们将解锁安卓开发的关键技能,让你能够构建自己的应用程序,甚至贡献于开源社区。准备好了吗?让我们开始吧!
21 2
|
9天前
|
Android开发
布谷语音软件开发:android端语音软件搭建开发教程
语音软件搭建android端语音软件开发教程!