通过阅读本文,您可以了解OBS插件SDK的集成与实现方法。
操作步骤
说明
本文中的实现方法仅供参考,您可以根据实际业务需求进行开发,详细示例请参见ali_rts_sdk/obs-output-example/artc-stream.c。
- 下载并解压OBS插件SDK。下载地址,请参见SDK下载。
- 工程中导入头文件ali_rts_sdk.h。
- 创建实例。
alirts_event_handler_t event_handler = {0};
event_handler.user_data = user_data;
event_handler.on_log_data = on_log_data;
event_handler.on_error = on_error;
event_handler.on_push_start = on_push_start;
event_handler.on_push_stop = on_push_stop;
event_handler.on_connection_lost = on_connection_lost;
event_handler.on_reconnect_state = on_reconnect_state;
alirts_handler_t* alirts = alirts_create(&event_handler);
- 推流。
alirts_config_t config = {0};
config.width = 1280;
config.height = 720;
config.gop_size = 2;
config.max_fps = 25;
config.video_bitrate_bps = 2500000;
config.video_codec = VIDEO_CODEC_H264;
config.video_preset = VIDEO_PRESET_FAST;
config.video_profile = VIDEO_PROFILE_BASELINE;
config.sample_rate = SAMPLE_RATE_48000;
config.sample_format = FORMAT_16BIT;
config.channel = 2;
config.audio_bitrate_bps = 64000;
config.enable_auto_reconnect = true;
config.reconnect_timeout = 10;
config.url= "artc://xxxx/xx/xxxxx";
int ret = alirts_start(alirts, &config);
if (ret != 0) {
}
说明
alirts_start
调用成功之后,会触发on_push_start
回调。
- 发送数据。
alirts_frame_t video_frame = {0};
video_frame.type = MEDIA_TYPE_VIDEO_I420;
video_frame.width = frame->width;
video_frame.height = frame->height;
video_frame.timestamp = frame->timestamp;
video_frame.data[0] = frame->data[0];
video_frame.data[1] = frame->data[1];
video_frame.data[2] = frame->data[2];
video_frame.linesize[0] = frame->linesize[0];
video_frame.linesize[1] = frame->linesize[1];
video_frame.linesize[2] = frame->linesize[2];
int ret = alirts_send_frame(alirts, &video_frame);
if (ret != 0) {
}
说明
建议在on_push_start
回调之后,调用alirts_send_frame
发送数据。
- 结束推流。
说明
alirts_stop
调用成功之后,会触发on_push_stop
回调。
- 释放实例。