API说明【内置编解码SDK】
API接口
所有API接口定义均位于SDTerminalSdk.h文件中。本API主要实现音视频编码、网络收发、音视频解码三大功能,同时提供了上下行码流的TS录制、统计信息获取等辅助功能。
1、系统环境初始化,仅需调用一次
void SDTerminal_Enviroment_Init(const char * outputPath, int outputLevel)
参数:
@param: outputPath:日志文件输出的目录,若目录不存在,SDK将自动创建,支持相对路径或绝对路径。日志对于问题定位非常重要,建议开启。
@param: outputLevel:日志输出的级别,只有等于或者高于该级别的日志会输出到文件,日志级别有: DEBUG、INFO、WARNING、ERROR、ALARM、FATAL、NONE,当指定为NONE时,将不会生成日志文件。具体见TERMINAL_LOG_OUTPUT_LEVEL定义。
返回值:无
2、系统退出时调用一次反初始化
void SDTerminal_Enviroment_Free ()
3、创建客户端SDK对象
void* SDTerminal_New(TerminalEncodeParams* ptEncodeParams, RemoteVideoYuvDataCallback pfOutputVideo, RemoteAudioPcmDataCallback pfOutputAudio, void* pObject);
参数:
@ ptEncodeParams,音视频编码相关参数,包括编码标准类型、是否采用硬编码、编码码率、编码帧率、编码分辨率、音频采样率、声道数等。
@ pfOutputVideo,视频接收解码输出回调函数。
@ pfOutputAudio,音频接收解码输出回调函数。
@ pObject,输出回调函数透传数据。
返回值:对象指针,返回NULL表示失败。
4、销毁客户端SDK对象
void SDTerminal_Delete(void** ppTerminal);
参数:
@ ppTerminal,模块指针的指针
说明:使用者应该做好与其他API之间的互斥保护
返回值:无
5、与对端建立连接
BOOL SDTerminal_Online(
void* pTerminal,
TerminalLogonParams* ptLogonParams,
TerminalTransParams* ptTransParams);
参数:
@ pTerminal,模块指针
@ ptLogonParams,建立连接相关参数,包括远端IP端口、本地IP端口、客户端类型。
@ ptTransParams,音视频传输相关参数,包括FEC相关、接收缓存相关等。
返回值:返回TRUE表示成功,返回FALSE则为失败。
::: tip
这里的连接并非真正的TCP连接,而是无连接的UDP。
:::
6、断开连接
void SDTerminal_Offline(void* pTerminal);
参数:
@ pTerminal,模块指针
返回值:无
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则为失败。
::: tip
需在Online接口调用成功后,才能有效调用本API。
:::
10、设置上行码流录制
BOOL SDTerminal_StartCapUpStream(void* pTerminal, const char* strTsFileDir);
void SDTerminal_StopCapUpStream(void* pTerminal);
参数:
@ pTerminal,模块指针
@ strTsFileDir,上行录制TS文件名,需带完整路径。
返回值:返回TRUE表示成功,返回FALSE则为失败。
::: tip
需在Online接口调用成功后,才能有效调用本API。
:::
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则为失败。
::: tip
需在Online接口调用成功后,才能有效调用本API。
:::
12、获取当前SDK版本信息
unsigned int SDTerminal_GetVersion (void* pTerminal);
参数:
@ pTerminal,模块指针
返回值:获得当前SDK的版本信息
最后修改时间: 1 年前