react-native-rtmp-player-jm 
Jimi RTMP Player SDK modules and view for React Native(Android & IOS), support react native 0.57+

Environments 环境要求
1.JS
2.Android
- Android SDK: api 28+
- gradle: 4.5
- Android Studio: 3.1.3+
3.IOS
Install 安装
使用 npm 源
npm install react-native-rtmp-player-jm --save
原生模块导入
Android Studio
react-native link react-native-rtmp-player-jm
IOS/Xcode
1、方式一:react-native link react-native-rtmp-player-jm
2、方式二:
Podfile 增加
pod 'React', :path => '../node_modules/react-native', :subspecs => [
'Core',
'CxxBridge',
'DevSupport',
'RCTText',
'RCTNetwork',
'RCTWebSocket',
'RCTAnimation'
]
pod 'yoga', :path => '../node_modules/react-native/ReactCommon/yoga'
pod 'DoubleConversion', :podspec => '../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec'
pod 'glog', :podspec => '../node_modules/react-native/third-party-podspecs/glog.podspec'
pod 'Folly', :podspec => '../node_modules/react-native/third-party-podspecs/Folly.podspec'
pod 'react-native-rtmp-player-jm', :podspec => '../node_modules/react-native-rtmp-player-jm/ios/react-native-rtmp-player-jm.podspec'
Usage 使用方法
import { Platform, NativeModules, NativeEventEmitter } from 'react-native';
import { JMRTMPMonitorView} from 'react-native-rtmp-player-jm';
const { JMRTMPPlayerManager } = NativeModules;
JMRTMPMonitorView Props 属性
| Prop |
Type |
Default |
Description |
| image |
require |
null |
Monitor视图默认展示图 |
JMRTMPPlayerManager Methods
| Method |
Listener |
Result |
Description |
| initialize(String key, String secret, String imei) |
null |
初始化成功 |
RTMP SDK内部初始化 |
| deInitialize() |
null |
null |
RTMP SDK 释放(解初始化) |
| startPlayLive() |
kOnStreamPlayerPlayStatus |
见回调说明 |
开始播放 |
| startPlay(String url) |
kOnStreamPlayerPlayStatus |
见回调说明 |
使用RTMP URL进行播放 |
| startPlayback(Array fileNameArray) |
kOnStreamPlayerReceiveDeviceData |
见回调说明 |
回放文件,参数为文件名称字符串列表 |
| stopPlay() |
null |
null |
停止播放 |
| startTalk() |
kOnStreamPlayerTalkStatus |
见回调说明 |
开始对讲,iOS会自动申请对讲权限,Android需要自己先申请权限 |
| stopTalk() |
kOnStreamPlayerTalkStatus |
见回调说明 |
停止对讲 |
| stop() |
null |
null |
停止内部所有功能(播放、对讲,网络请求) |
| reStart() |
null |
null |
重启网关、Web服务 |
| Promise switchCamera(bool isFront, bool bAuto, resolver, rejecter) |
Promise |
bAuto,默认请填true,成功返回url,否则错误码及错误信息,比如:{ [Error: 设备不在线] code: '228'} |
切换摄像头 |
| Promise snapshot(String filePath) |
Promise |
成功返回保存后的图片路径,否则错误码及错误信息,比如:{ [Error: Failed to do snapshot] code: '-1'} |
视频截图,filePath:需要保存图片的绝对路径,必须以".png"结尾,code:-1,截图失败,-2:保存图片失败,-3:格式无效 |
| startRecording(String filePath) |
kOnStreamPlayerRecordStatus |
见回调说明 |
mp4视频录制,filePath:需要保存视频的绝对路径(iOS默认只录制在沙盒,必须以".mp4"结尾) |
| stopRecording() |
kOnStreamPlayerRecordStatus |
见回调说明 |
停止视频录制 |
| Promise isRecording(resolve, rejecter) |
Promise |
true:正在录制;false:未录制 |
视频是否在录制 |
| Promise getRecordingDuration(resolve, rejecter) |
Promise |
0 |
视频录制的时长(毫秒) |
| Promise sendCustomRequest(Map paraDic, resolve, rejecter) |
Promise |
0 |
发送自定义指令(请求) |
| setMute(bool mute) |
null |
null |
设置静音 |
| Promise getMute() |
Promise |
true:静音;false:未静音 |
获取静音状态 |
| Promise videoSize() |
Promise |
{"width": 0, "hieght": 0} |
获取视频宽高,只有视频开始且显示画面之后才有效 |
JMRTMPPlayerManager Listener:- kOnStreamPlayerPlayStatus
| Field |
Must Exist |
Type |
Value |
Description |
| status |
YES |
int |
1~14, "videoStatusPrepare": 正在准备播放; "videoStatusStart": 正在播放; "videoStatusStop": 停止播放;"videoStatusErrURLGet": 获取URL失败;"videoStatusErrURLInvalid": URL无效;"videoStatusErrOpenFail": 打开URL失败;"videoStatusErrOpenTimeout": 打开URL超时;"videoStatusErrPlayAbnormal": 播放异常或设备停止推流(会自动停止播放器);"videoStatusErrHttpTimeout": http请求超时;"videoStatusErrHttpHost": 域名或IP错误;"videoStatusErrHttpParameter": http参数错误;"videoStatusErrServerData": 服务器数据解析异常;"videoStatusErrDeviceReplayFail": 设备回复“失败”;"videoStatusErrNetworkAnomaly": 网络异常; |
播放状态 |
| errCode |
NO |
int |
> videoStatusStop,或其他服务器返回错误码 |
播放错误码 |
| errMsg |
NO |
int |
错误提示语 |
错误提示语,仅当 status===videoStatusErrURLGet 时才有 |
Code:- PlayStatus
| Code |
Description |
| 0 |
未启动或未识别的状态 |
| 1 |
正在准备播放 |
| 2 |
开始或正在播放 |
| 3 |
播放结束 |
| 4 |
获取URL失败 |
| 5 |
URL无效 |
| 6 |
打开URL失败 |
| 7 |
打开URL超时 |
| 8 |
播放异常或设备停止推流(会自动停止播放器) |
| 9 |
http请求超时 |
| 10 |
域名或IP错误 |
| 11 |
http参数错误 |
| 12 |
服务器数据解析异常 |
| 13 |
设备回复“失败”及拒绝响应 |
| 14 |
网络异常 |
JMRTMPPlayerManager Listener:- kOnStreamPlayerTalkStatus
| Field |
Must Exist |
Type |
Value |
Description |
| status |
YES |
int |
1~14, "talkStatusPrepare": 进行对讲准备工作; "talkStatusStart": 对讲已开始; "talkStatusStop": 对讲已停止;"talkStatusErrURLGet": 获取URL失败;"talkStatusErrInit": 初始化对讲URL失败;"talkStatusErrTalking": 正在对讲不能再次开始;"talkStatusErrSend": 发送音频数据失败;"talkStatusErrHttpTimeout": http请求超时;"talkStatusErrHttpHost": 域名或IP错误;"talkStatusErrHttpParameter": http参数错误;"talkStatusErrServerData": 服务器数据解析异常;"talkStatusErrDeviceReplayFail": 设备回复“失败”;"talkStatusErrNetworkAnomaly": 网络异常;"talkStatusErrAuthority": 无麦克风权限 |
播放状态 |
| errCode |
NO |
int |
> talkStatusStop,或其他服务器返回错误码 |
播放错误码 |
| errMsg |
NO |
int |
错误提示语 |
错误提示语,仅当 status===talkStatusErrURLGet 时才有 |
Code:- TalkStatus
| Code |
Description |
| 0 |
未启动或未识别的状态 |
| 1 |
进行对讲准备工作 |
| 2 |
对讲已开始 |
| 3 |
对讲已停止 |
| 4 |
获取URL失败 |
| 5 |
初始化对讲URL失败 |
| 6 |
正在对讲不能再次开始 |
| 7 |
发送音频数据失败 |
| 8 |
http请求超时 |
| 9 |
域名或IP错误 |
| 10 |
http参数错误 |
| 11 |
服务器数据解析异常 |
| 12 |
设备回复“失败”,即表示设备端拒绝对讲或对讲初始化异常 |
| 13 |
网络异常 |
| 14 |
无麦克风权限 |
JMRTMPPlayerManager Listener:- kOnStreamPlayerRecordStatus
| Field |
Must Exist |
Type |
Value |
Description |
| status |
YES |
int |
1~7, "recordStatusStart": 开始录制; "recordStatusComplete": 录制完成; "recordStatusErrRecording": 正在录制;"recordStatusErrFail": 录制失败;"recordStatusErrSave": 保存失败;"recordStatusErrPath": 无效路径;"recordStatusErrAuthority": 无权限; |
录制状态 |
| filePath |
YES |
string |
录制视频的保存路径 |
|
Code:- RecordStatus
| Code |
Description |
| 0 |
未启动或未识别的状态 |
| 1 |
开始录制 |
| 2 |
录制完成 |
| 3 |
正在录制 |
| 4 |
录制失败 |
| 5 |
保存失败 |
| 6 |
无效路径 |
| 7 |
无权限 |
JMRTMPPlayerManager Listener:- kOnStreamPlayerReceiveFrameInfo
| Field |
Must Exist |
Type |
Value |
Description |
| width |
YES |
int |
0 |
视频宽度 |
| height |
YES |
int |
0 |
视频高度 |
| videoBps |
YES |
int |
0 |
视频每秒码率 |
| audioBPS |
YES |
int |
0 |
音频每秒高度 |
| timestamp |
YES |
int |
0 |
视频时间戳 |
| totalFrameCount |
YES |
int |
0 |
视频每秒帧总数 |
| onlineCount |
YES |
int |
0 |
设备端在线的人数 |
JMRTMPPlayerManager Listener:- kOnStreamPlayerReceiveDeviceData
| Field |
Must Exist |
Type |
Value |
Description |
| undefine |
YES |
undefine |
null |
回复内容由设备端决定,一般是json字符串或字符串 |
Code:- DeviceData
| Code |
Description |
| 0x3 |
设备端SDK信息 |
| 0x5 |
响应客户端SDK释放请求 |
| 0x10 |
在线人数信息 |
| 0x108 |
单个回放文件结尾 |
| 0x109 |
所有回放文件结束 |
Demo示例
https://github.com//Eafy/react-native-rtmp-player-jm/tree/master/example/App.js