API说明【C内置编解码SDK】
API接口
所有API接口定义均位于SDTerminalSdk.h文件中。本API主要实现音视频编码、网络收发、音视频解码三大功能,同时提供了上下行码流的TS录制、统计信息获取等辅助功能。
1、系统环境初始化,仅需调用一次
void SDTerminal_Enviroment_Init(const char * outputPath, int outputLevel)
参数:
@param: outputPath:日志文件输出的目录,若目录不存在,SDK将自动创建,支持相对路径或绝对路径。日志对于问题定位非常重要,建议开启。
@param: outputLevel:日志输出的级别,只有等于或者高于该级别的日志会输出到文件,日志级别取值见LOG_OUTPUT_LEVEL定义,有DEBUG、INFO、WARNING、ERROR、ALARM、FATAL、NONE几个级别可选,当指定为NONE时,将不会生成日志文件。
2、系统退出时调用一次反初始化
void SDTerminal_Enviroment_Free ()
3、创建客户端SDK对象
void* SDTerminal_New(TerminalEncodeParams* ptEncodeParams, RemoteVideoYuvDataCallback pfOutputVideo, RemoteAudioPcmDataCallback pfOutputAudio, SystemStatusCallback pfSysStatus, void* pObject);
参数:
@ ptEncodeParams,音视频编码相关参数,包括码率、帧率、分辨率、采样率、声道数、是否启用硬编码等。
@ pfOutputVideo,视频接收解码输出回调函数。
@ pfOutputAudio,音频接收解码输出回调函数。
@ pfSysStatus,系统状态输出回调函数。
@ pObject,输出回调函数透传数据。
返回值:
对象指针,返回NULL表示失败。
4、销毁客户端SDK对象
void SDTerminal_Delete(void** ppTerminal);
参数:
@ ppTerminal,模块指针的指针
返回值:无
::: caution
使用者应该做好与其他API之间的互斥保护。
:::
5、登录服务器
BOOL SDTerminal_Online(
void* pTerminal,
TerminalLogonParams* ptLogonParams,
TerminalTransParams* ptTransParams);
参数:
@ pTerminal,模块指针
@ ptLogonParams,登录服务器相关参数,包括UID、房间号、上行发送位置、下行接收掩码等。
@ ptTransParams,音视频传输相关参数,包括FEC相关、接收缓存相关等。
说明:同步登录模式下,本API为阻塞式,登录失败的超时时间较长,请避免在UI线程中调用。
说明:通过设置音视频下行接收掩码,可以选择从服务器接收哪几个位置的音视频数据。每一个bit对应一个位置,最低位对应0号位置,最高位对应31号位置。比如希望接收某个index位置的音视频时,可以设置其对应bit设置为1,否则设置为0。
允许接收某个index位置的音视频时,可以设置为:
UINT unMask = 0x1 << (index);
unAudioDownChannelsMask |= unMask;
unVideoDownChannelsMask |= unMask;
当本客户端仅发送音视频,不接收音视频时,设置音视频接收掩码全为0即可。
返回值:返回TRUE表示成功,返回FALSE则为失败。
6、下线服务器
void SDTerminal_Offline(void* pTerminal);
参数:
@ pTerminal,模块指针
返回值:无
::: tip
下线服务器,若此时用户在音视频位置上,将同时从位置上下来。
:::
7、编码并发送一帧视频数据
void SDTerminal_SendVideoData(void* pTerminal, unsigned char* buf, unsigned int unWidth, unsigned int unHeight, TERMINAL_VIDEO_INPUT_FORMAT eFormat);
参数:
@ pTerminal,模块指针
@ buf,输入图像存放区。
@ unWidth,输入图像宽度,当与编码宽高不一致时,内部自行缩放。建议与编码宽高一致。
@ unHeight,输入图像高度,当与编码宽高不一致时,内部自行缩放。建议与编码宽高一致。
@ eFormat, 输入图像格式,建议与编码器当前使用的格式一致。
返回值:无
::: tip
使用硬编码时,外层可先通过SDTerminal_GetHardwareEncInfo接口获得当前硬编码支持的输入格式,以此作为外层采集格式。这样避免内部再进行色度空间转换、缩放处理,提高性能。
:::
8、编码并发送一帧音频数据
void SDTerminal_SendAudioData(void* pTerminal, unsigned char* buf, unsigned int unLen);
参数:
@pTerminal,模块指针
@ buf,输入音频PCM存放区。
@ unLen,输入音频PCM字节数。
返回值:无
9、获取硬编码支持情况
BOOL SDTerminal_GetHardwareEncInfo(void* pTerminal, BOOL* pbWillUseHwEnc, TERMINAL_VIDEO_INPUT_FORMAT *peHwRecomInputFormat);
参数:
@ pTerminal,模块指针
@ pbWillUseHwEnc,是否将最终采用硬编码。用户在Online接口中启用硬编码,当最终是否采用将取决于当前机器设备是否支持,不支持时将自动使用软编码。
@ peHwRecomInputFormat,若最终采用硬编码,返回硬编码器支持的输入格式。
返回值:返回TRUE表示成功,返回FALSE则为失败。
::: caution
需在Online调用成功后调用生效。
:::
10、设置上行码流录制
BOOL SDTerminal_StartCapUpStream(void* pTerminal, const char* strTsFileDir);
void SDTerminal_StopCapUpStream(void* pTerminal);
参数:
@ pTerminal,模块指针
@ strTsFileDir,上行录制TS文件名,需带完整路径。
返回值:返回TRUE表示成功,返回FALSE则为失败。
::: caution
SDTerminal_StartCapUpStream需在Online接口成功后调用生效。
:::
11、设置下行码流录制
BOOL SDTerminal_StartCapDownStream(void* pTerminal, unsigned int unAvDownIndex, const char* strTsFileDir);
void SDTerminal_StopCapDownStream(void* pTerminal, unsigned int unAvDownIndex);
参数:
@ pTerminal,模块指针
@ unAvDownIndex,需要录制的下行位置。
@ strTsFileDir,下行录制TS文件名,需带完整路径。
返回值:返回TRUE表示成功,返回FALSE则为失败。
::: caution
SDTerminal_StartCapDownStream需在Online接口成功后调用生效。
:::
12、获取当前SDK版本信息
unsigned int SDTerminal_GetVersion (void* pTerminal);
参数:
@ pTerminal,模块指针
返回值:获得当前SDK的版本信息
13、获取当前丢包率数据
void SDTerminal_GetVideoAudioUpDownLostRatio(void* pTerminal, float *pfVideoUpLostRatio, float *pfVideoDownLostRatio, float *pfAudioUpLostRatio, float *pfAudioDownLostRatio);
参数:
@pTerminal,模块指针
@pfVideoUpLostRatio,获取视频上行丢包率
@pfVideoDownLostRatio,获取视频下行丢包率
@pfAudioUpLostRatio,获取音频上行丢包率
@pfAudioDownLostRatio,获取音频下行丢包率
返回值:内部已经乘100得到百分比
14、获取当前视频通道的实时RTT
unsigned int SDTerminal_GetCurrentRtt(void* pTerminal);
@pTerminal,模块指针
返回值:获得当前视频通道的实时RTT值
最后修改时间: 1 年前
API接口
1、系统环境初始化,仅需调用一次
2、系统退出时调用一次反初始化
3、创建客户端SDK对象
4、销毁客户端SDK对象
5、登录服务器
6、下线服务器
7、编码并发送一帧视频数据
8、编码并发送一帧音频数据
9、获取硬编码支持情况
10、设置上行码流录制
11、设置下行码流录制
12、获取当前SDK版本信息
13、获取当前丢包率数据
14、获取当前视频通道的实时RTT