基于大牛直播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 放入 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 渲染模块等,广泛适用于工业监控、远程协作、教育培训、嵌入式视觉等场景。

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

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值