基于大牛直播SDK的 Android RTSP/RTMP 播放器集成指南

基于大牛直播SDK的 Android RTSP/RTMP 播放器集成指南

📘 1. 概述

本 SDK 是一款成熟的跨平台 RTSP 和 RTMP 播放核心,支持 H.264/H.265 视频、AAC / PCMA / PCMU / Speex 音频,具备超低延迟、资源占用低、可组合扩展的特点,适用于工业监控、智慧教育、执法记录、远程协作等高性能场景。

✅ Android 播放器支持功能一览

📱 基础能力
功能 描述
多实例播放 同时打开多个流实例,互不干扰
RTSP / RTMP 协议支持 兼容主流直播协议,支持公网/局域网/设备流接入
首屏秒开(Fast Startup) 优化首帧渲染,在服务器缓存GOP的情况下,首帧画面渲染更快
低延迟播放模式 实现 100~250ms 级别端到端延迟
URL 快速切换 播放过程中无缝切换多个流地址

🎥 画面与渲染控制
功能 描述
硬解 / 软解自由切换 支持 H.264 / H.265 硬件解码,回退软解
画面旋转 支持 0° / 90° / 180° / 270° 显示
画面翻转 支持水平 / 垂直镜像,适配多角度摄像头
渲染填充模式 全屏铺满 / 保持比例两种渲染策略
抗锯齿显示 SurfaceView模式下,开启后提升画质(部分设备有性能开销)

🔊 音视频数据与回调能力
功能 描述
YUV / RGB 视频帧回调 解码后回调 YUV420P/RGB 帧,可用于 AI 识别、图像处理
PCM / AAC 音频帧回调 实时输出音频帧,适配 AI 语音模型、转推处理
自定义音频输出 支持 AudioTrack / OpenSL ES 等输出方式
静音切换 动态开启 / 关闭音频输出
音量调节 支持 0~100 实时音量控制

📸 快照与录像
功能 描述
实时快照 截图为 JPEG/PNG,支持路径 + 标签设置
本地录像 保存为 MP4 文件,支持目录设置、文件分片大小控制
音视频录制控制 可独立控制音频 / 视频是否录入
AAC转码支持 音频可启用AAC转码,兼容性更强

🌐 网络与协议支持
功能 描述
RTSP TCP / UDP 模式切换 可指定协议类型,适应不同网络环境
自动 TCP/UDP 切换 播放失败时自动协议重试,提升容错
网络断开自动重连 支持播放过程中断网后自动重试连接
RTSP 请求超时控制 支持超时秒数设置
流量控制与缓冲调节 支持缓存时间动态设置,实现平滑播放与节流

⚙️ 2. 系统要求

项目 要求
Android 版本 Android 5.1 及以上
CPU 架构 armv7 / arm64-v8a / x86 / x86_64

🔧 3. 集成准备

3.1 文件组织

  • SmartPlayerJniV2.java 放入 ***.daniulive.smartplayer 包;

  • 引入 Smartavengine.jar

  • libSmartPlayer.so (各ABI版本) 拷贝至项目 jniLibs/ 对应目录。

3.2 AndroidManifest 权限声明

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" >
</uses-permission>
<uses-permission android:name="android.permission.INTER***" >
</uses-permission>
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />

3.3 Native 库加载 & Gradle 配置

  • Load相关so:
static {  
    System.loadLibrary("SmartPlayer");
}
  • build.gradle配置32/64位库:
splits {
    abi {
        enable true
        reset()
        // Specifies a list of ABIs that Gradle should create APKs for
        include 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64' //select ABIs to build APKs for
        // Specify that we do not want to also generate a universal APK that includes all ABIs
        universalApk true
    }
}

3.4 授权 App 名称设置

  • 如需集成到自己系统测试,请用大牛直播SDK的app name,授权版按照授权app name正常使用即可;
  • 如何改app-name,strings.xml做以下修改:
<string name="app_name">SmartPlayerSDKDemo</string>

📌 4. 接口说明(模块分类)

4.1 初始化与播放配置

接口 功能
SmartPlayerOpen 初始化播放对象
SmartPlayerSetUrl 设置 RTSP / RTMP 流地址
SmartPlayerSetBuffer 设置缓冲时长(ms)
SmartPlayerSetFastStartup 首屏秒开开关
SmartPlayerSetLowLatencyMode 打开低延迟播放模式

4.2 播放控制

接口 功能效果
SmartPlayerStartPlay 启动播放
SmartPlayerStopPlay 停止播放
SmartPlayerClose 销毁播放器实例

4.3 解码与渲染设置

接口 功能描述
SetSmartPlayerVideoHWDecoder 启用 H.264 硬解(不支持自动回退软解)
SetSmartPlayerVideoHevcHWDecoder 启用 H.265 硬解
SmartPlayerSetHWRenderMode 使用 MediaCodec 自绘渲染,兼容性高
SmartPlayerSetSurface 设置渲染 Surface(可空以支持纯音频播放)
SmartPlayerSetRenderScaleMode 画面填充模式(全屏或等比例)
SmartPlayerSetSurfaceRenderFormat 渲染格式选择 RGB565 或 ARGB8888
SmartPlayerSetSurfaceAntiAlias 抗锯齿选项(启用后有性能开销)

4.4 网络协议策略配置

接口 功能说明
SmartPlayerSetRTSPTcpMode 强制 RTSP 使用 TCP 模式
SmartPlayerSetRTSPTimeout 设置 RTSP 请求超时(秒)
SmartPlayerSetRTSPAutoSwitchTcpUdp 启用 UDP/TCP 自动切换
SmartPlayerSwitchPlaybackUrl 支持播放中快速切换 URL

4.5 音频与数据回调支持

接口 功能描述
SmartPlayerSetAudioVolume 实时设置音量(0~100)
SmartPlayerSetMute 实时静音
SmartPlayerSetAudioOutputType 切换 AudioTrack / OpenSL ES 输出方式
SmartPlayerSetExternalAudioOutput 获取 PCM / AAC / Speex 音频回调
SmartPlayerSetExternalRender 获取解码后 YUV / RGB 视频帧

4.6 截图、旋转与翻转

接口 功能说明
CaptureImage 截图为 JPEG 或 PNG,支持文件路径 & 用户标签
SmartPlayerSetRotation 旋转画面(0° / 90° / 180° / 270°)
SmartPlayerSetFlipHorizontal 水平镜像翻转
SmartPlayerSetFlipVertical 垂直镜像翻转

📌 4.7 录像功能配置

支持将播放中的 RTSP / RTMP 视频流本地录制为 MP4 文件,适用于取证存档、断点缓存、边播放边录制等场景。

接口函数 功能说明
SmartPlayerSetRecorderDirectory 设置录像文件保存路径(必须具有写权限)
SmartPlayerSetRecorderFileMaxSize 设置单个录像文件最大大小(MB,默认 100MB)
SmartPlayerSetRecorderVideo 设置是否录制视频(1:录制,0:不录制)
SmartPlayerSetRecorderAudio 设置是否录制音频(1:录制,0:不录制)
SmartPlayerSetRecorderAudioTranscodeAAC 是否将录音频转码为 AAC(适配播放器兼容性)
SmartPlayerCreateFileDirectory 创建目录(推荐调用以确保路径有效)
SmartPlayerStartRecorder 启动录像
SmartPlayerStopRecorder 停止录像并关闭当前录像文件

✅ 大牛直播SDK Android 播放器功能调用示例

☑ 1. 播放器初始化

long handle = libPlayer.SmartPlayerOpen(context);
if (handle == 0) {
    Log.e(TAG, "SmartPlayerOpen failed");
    return;
}

☑ 2. 设置播放地址(支持 RTSP / RTMP)

libPlayer.SmartPlayerSetUrl(handle, "rtsp://192.168.1.100/live.sdp");
// 或者
libPlayer.SmartPlayerSetUrl(handle, "rtmp://live.mycdn.***/app/stream");

☑ 3. 播放控制(开始 / 停止 / 释放)

libPlayer.SmartPlayerStartPlay(handle);
libPlayer.SmartPlayerStopPlay(handle);
libPlayer.SmartPlayerClose(handle);

☑ 4. 播放性能优化参数

libPlayer.SmartPlayerSetFastStartup(handle, 1);           // 首屏秒开
libPlayer.SmartPlayerSetLowLatencyMode(handle, 1);        // 低延迟模式
libPlayer.SmartPlayerSetBuffer(handle, 200);              // 缓冲时间(毫秒)

☑ 5. 解码与渲染配置

libPlayer.SetSmartPlayerVideoHWDecoder(handle, 1);        // 启用H.264硬解
libPlayer.SetSmartPlayerVideoHevcHWDecoder(handle, 1);    // 启用H.265硬解
libPlayer.SmartPlayerSetSurface(handle, surface);         // 设置渲染Surface
libPlayer.SmartPlayerSetRenderScaleMode(handle, 0);       // 等比例显示
libPlayer.SmartPlayerSetSurfaceRenderFormat(handle, 1);   // ARGB8888格式
libPlayer.SmartPlayerSetSurfaceAntiAlias(handle, 1);      // 抗锯齿

☑ 6. 网络协议设置

libPlayer.SmartPlayerSetRTSPTcpMode(handle, 1);           // 强制RTSP TCP模式
libPlayer.SmartPlayerSetRTSPTimeout(handle, 10);          // 设置请求超时(秒)
libPlayer.SmartPlayerSetRTSPAutoSwitchTcpUdp(handle, 1);  // 自动切换UDP/TCP
libPlayer.SmartPlayerSwitchPlaybackUrl(handle, newUrl);   // 快速切流

☑ 7. 音频控制

libPlayer.SmartPlayerSetAudioVolume(handle, 80);          // 设置音量
libPlayer.SmartPlayerSetMute(handle, 1);                  // 静音
libPlayer.SmartPlayerSetAudioOutputType(handle, 1);       // 选择 AudioTrack 输出

☑ 8. 外部音视频数据回调(AI识别/转推等场景)

libPlayer.SmartPlayerSetExternalAudioOutput(playerHandle, new PlayerExternalPcmOutput());   // 获取PCM音频帧

libPlayer.SmartPlayerSetExternalRender(playerHandle, new I420ExternalRender(imageSavePath));        // 获取YUV帧

libPlayer.SmartPlayerSetExternalRender(playerHandle, new RGBAExternalRender(imageSavePath));    //获取RGB帧


☑ 9. 视频画面操作(截图/旋转/翻转)

libPlayer.CaptureImage(handle, "/sdcard/snap1.jpg");      // 截图 JPEG
libPlayer.SmartPlayerSetRotation(handle, 90);             // 顺时针旋转90°
libPlayer.SmartPlayerSetFlipHorizontal(handle, 1);        // 水平翻转
libPlayer.SmartPlayerSetFlipVertical(handle, 1);          // 垂直翻转

☑ 10. 录像控制

String recDir = PathUtils.getRecordDir(context);
libPlayer.SmartPlayerCreateFileDirectory(recDir);
libPlayer.SmartPlayerSetRecorderDirectory(handle, recDir);
libPlayer.SmartPlayerSetRecorderFileMaxSize(handle, 200); // 单文件最大200MB
libPlayer.SmartPlayerSetRecorderVideo(handle, 1);
libPlayer.SmartPlayerSetRecorderAudio(handle, 1);
libPlayer.SmartPlayerSetRecorderAudioTranscodeAAC(handle, 1);

// 启动录像
libPlayer.SmartPlayerStartRecorder(handle);

// 停止录像
libPlayer.SmartPlayerStopRecorder(handle);

☑ 11. 状态判断与异常处理

if (libPlayer != null && handle != 0 && isPlaying) {
    libPlayer.SmartPlayerStopPlay(handle);
    libPlayer.SmartPlayerClose(handle);
}

📊 6. 功能支持一览

功能项 是否支持
RTSP / RTMP H.264 / H.265 播放
AAC / PCM / Speex 音频播放
多实例并发播放
软解 / 硬解自动切换
实时截图、旋转、镜像
快速 URL 切换
自动断网重连
首屏秒开模式
延迟控制至 100–250ms 内
YUV/RGB 视频帧 + 音频回调
SurfaceView/OpenGL ES 渲染

Android平台RTMP播放器时延视频

Android平台RTMP直播播放器延迟测试

Android平台RTSP播放器时延视频

Android平台RTSP播放器时延测试


⚙️ 7. 扩展使用建议

  • 多模块组合:可组合使用播放、录制、流转发、RTSP 服务端模块,共同发挥功能(例如播放 + 本地重录 + 转发 + RTSP 服务)。

  • 接入 AI 分析能力:通过视频帧接口,可实时进行边缘 AI 推理或图像分析。

  • 录像插件使用:支持录制 RTSP / RTMP 流,并支持音频转 AAC 和多种录像模式。

  • 适用场景举例:教学直播、工业巡检、城市安防、执法记录仪等需要低延迟、高稳定性的场合。


✅ 8. 结语

Android 版接入指南 基于 大牛直播SDK 自 2015 年以来不断演进的 RTSP/RTMP 播放模块编写,涵盖了从基础接入流程、接口分类说明、参数配置建议,到典型调用示例与功能能力矩阵的完整内容,旨在帮助开发者快速集成一套 稳定、高兼容、低延迟 的直播播放能力。

得益于 大牛直播SDK 模块化设计与跨平台支持,该播放端不仅可独立使用,还可灵活对接同系列的推流端、轻量级 RTSP 服务模块、Unity 渲染模块等,广泛适用于工业监控、远程协作、教育培训、嵌入式视觉等场景。

附录:Android平台RTSP|RTMP直播播放器技术接入说明

转载请说明出处内容投诉
CSS教程网 » 基于大牛直播SDK的 Android RTSP/RTMP 播放器集成指南

发表评论

欢迎 访客 发表评论

一个令你着迷的主题!

查看演示 官网购买