SDK接口说明
更新时间:2024-06-03
一、概述
API | 描述 |
---|---|
GetRtlStreamModule | 获取rtl API操作唯一句柄。 |
create | 创建rtl 播放实例 |
open | 通过url打开媒体流 |
read | 读取一帧媒体数据 |
free_frame | 释放一帧媒体数据 |
close | 关闭媒体流 |
二、API详情
* GetRtlStreamModule: 获取rtl API操作唯一句柄。
const struct RtlStreamModule* GetRtlStreamModule(int version);
参数
参数 | 类型 | 描述 |
---|---|---|
version | int | 版本号 |
返回
返回操作其它API的 RtlStreamModule 函数指针。
* create:创建rtl 播放实例。
void* (*create)(RtlProfile profile);
参数
参数 | 类型 | 描述 |
---|---|---|
profile | RtlProfile | 播放配置 |
返回
返回播放操作句柄表示成功,返回nullptr表示失败。
1、RtlProfile 数据结构
typedef struct RtlProfile {
RtlLogLevel log_level; // debug log level
void* ctx; // AVFormatContext usually
RtlSignalingMode signaling_mode;
RtlCallbacks callbacks; // rtl callbacks
char *media_server_host;
} RtlProfile;
成员属性 | 描述 |
---|---|
log_level | debug log 级别控制 包括:0:RTL_LOG_DEBUG、1:RTL_LOG_INFO、2:RTL_LOG_WARN、3:RTL_LOG_ERROR、4:RTL_LOG_NONE |
signaling_mode | 信令模式,1: http 信令、2:百度私有udp信令,暂不开放 3: udp over minisdp信令。 |
ctx | 传入rtl 的上下文, ffmpeg 里一般传入AVFormatContext。 |
callbacks | rtl 回调 |
media_server_host | 预设媒体服务地址,可优化启播,非必需。 |
2、RtlCallbacks 结构
typedef struct RtlCallbacks {
OnLogSink log_sink; // log callback
MsgCallback msg_callback; // message callback
MediaInfoCallback media_info_callback; // media info callback
} RtlCallbacks;
成员属性 | 描述 |
---|---|
log_sink | 日志回调, rtl 通过该接口向接入层回调debug日志信息; |
msg_callback | 消息回调,rtl 通过该接口向接入层回调事件及异常消息; |
media_info_callback | 媒体信息回调,rtl 通过该接口向接入层回调媒体信息; |
3、MsgCallback 消息回调
typedef int(*MsgCallback)(void* ctx, int type, const void* data, int data_size);
参数 | 类型 | 描述 |
---|---|---|
ctx | void* | 上下文 |
type | int | 消息类型 |
void* | 消息扩展信息 | |
data_size | int | 消息扩展信息长度 |
消息类型包含事件消息及异常消息。
事件消息定义:
事件消息 | 事件码 | 描述 |
---|---|---|
RTL_EVENT_ICE_CONNECTED | 1201 | ICE 媒体通道连接成功。 |
RTL_EVENT_CONNECTION_CLOSED | 1202 | 播放连接关闭。 |
RTL_EVENT_ICE_DISCONNECTED | 1206 | ICE 媒体通道连接断开。 |
RTL_EVENT_NO_STREAMING_DETECTED | 1207 | 没有检测到媒体流。 |
RTL_EVENT_REMOTE_SDP_ACQUIRED | 1210 | 获得远端媒体描述。 |
RTL_EVENT_FIRST_VFRAME | 1211 | 视频首帧事件。 |
异常消息定义:
错误消息 | 错误码 | 描述 |
---|---|---|
RTL_ERROR_ICE_CHANNEL | 12001 | ICE 连接错误, 建议重试一次, 重试仍失败降级为普通直播。 |
RTL_ERROR_CONNECTION | 12003 | 播放连接创建失败。 |
RTL_ERROR_REMOTE_SDP_REQUEST | 12006 | 远端媒体描述请求失败, 建议降级为普通播放。 |
RTL_ERROR_INVALID_STATE | 12008 | 播放状态错误。 |
RTL_ERROR_STREAMING_INTERRUPT | 12009 | 媒体流中断错误(默认10s未收到媒体流则反馈该错误)。 |
RTL_ERROR_INVALID_URL | 12010 | URL 格式错误。 |
RTL_ERROR_MTU_SIZE_CHECK_FAILED | 12014 | 用户当前网络不支持低延时播放错误(MTU检测异常),建议降级为普通播放。 |
* open:通过url打开媒体流。
int (*open)(void* handle, const char* stream_url);
参数
参数 | 类型 | 描述 |
---|---|---|
handle | void* | create 接口返回的播放句柄。 |
stream_url | char* | 媒体流播放地址,前缀为“webrtc://”。 |
返回
成功返回0,失败返回负值。
* read:读取一帧音视媒体数据。
int (*read)(void* handle, struct RtlFrame** frame);
参数
参数 | 类型 | 描述 |
---|---|---|
handle | void* | create 接口返回的播放句柄。 |
frame | struct RtlFrame** | 音视频媒体数据结构。 |
返回
返回 1 表示读取一帧到存入frame。 返回-1表示EOF。 返回其它负值表示发生错误;
* free_frame:释放一帧媒体数据。
void (*free_frame)(void* handle, struct RtlFrame* frame);
参数
参数 | 类型 | 描述 |
---|---|---|
handle | void* | create 接口返回的播放句柄。 |
frame | struct RtlFrame** | 待释放的一帧媒体数据。 |
返回
无返回
* close:关闭媒体流。
void (*close)(void* handle);
参数
参数 | 类型 | 描述 |
---|---|---|
handle | void* | create 接口返回的播放句柄。 |
返回
无返回。