📘 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放入com.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.INTERNET" >
</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.com/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 渲染模块等,广泛适用于工业监控、远程协作、教育培训、嵌入式视觉等场景。

1090

被折叠的 条评论
为什么被折叠?



