集成FreeRtos SDK
更新时间:2025-05-15
开发环境
请确保开发环境满足以下技术要求:
- Windows7、Windows8、Windows10或以上版本
- 安装ARM DS-5 v5.26.2或以上版本。
- 安装msys2-x86_64-20210105或以上版本。
- 安装ActivePerl5.32或以上版本。
- 安装python3.8.7或以上版本。
- 硬件设备:基于ASR3601的小度手表。
SDK下载
进入RTC文档中心,点击“下载专区>SDK&Demo下载”
SDK目录说明
- BRTC.FreeRtos.SDKV0.0.1/include目录 ------ 放置api头文件
- BRTC.FreeRtos.SDKV0.0.1/lib目录 ------ 放置音视频静态库libbrtc.a
- BRTC.FreeRtos.SDKV0.0.1/src目录 ------ 放置api调用的参考demo代码
SDK集成
- 将BRTC.FreeRtos.SDKV0.0.1/include目录加入到CMakeLists.txt中的头文件搜索路径。
- 将BRTC.FreeRtos.SDKV0.0.1/lib目录下的libbrtc.a放到执行目录下。
- application调用sdk api流程可参考BRTC.FreeRtos.SDKV0.0.1/src/demo.c源代码。
- 小度手表app调用sdk api流程可参考BRTC.FreeRtos.SDKV0.0.1/src/lv_app源代码。
- 完成以上步骤后,即可开始调用FreeRtos RTC的API。
API调用流程
1. API 调用流程图
2. API codes使用样例
`
Plain Text
1bool rtc_joined_room = false;
2static void OnRtcMessage(RtcMessage* msg)
3{
4 printf("myListener got Message: %d\n", msg->msgType);
5 switch (msg->msgType) {
6 case RTC_MESSAGE_ROOM_EVENT_LOGIN_OK: {
7 printf("Login ok!\n");
8 } break;
9 case RTC_MESSAGE_ROOM_EVENT_LOGIN_ERROR: {
10 printf("Login error!\n");
11 } break;
12 case RTC_MESSAGE_ROOM_EVENT_LOGIN_TIMEOUT: {
13 printf("Login timeout!\n");
14 } break;
15 case RTC_MESSAGE_ROOM_EVENT_CONNECTION_ERROR: {
16 printf("Connection error!\n");
17 } break;
18 case RTC_MESSAGE_ROOM_EVENT_REMOTE_COMING: {
19 printf("Feed coming!\n");
20 } break;
21 case RTC_ROOM_EVENT_ON_PUBLISHER_JOINED_ROOM: {
22 printf("Publisher joined room!\n");
23 rtc_joined_room = true;
24 } break;
25 case RTC_ROOM_EVENT_ON_USER_MESSAGE: {
26 printf("user msg callback:%s\n", msg->extra_info);
27 } break;
28 case RTC_ROOM_EVENT_ON_USER_JOINED_ROOM: {
29 printf("User joined room!\n");
30 } break;
31 case RTC_MESSAGE_MEDIA_SIGNAL_ESTABLISH_OK: {
32 printf("Media signal established ok!\n");
33 } break;
34 case RTC_MESSAGE_MEDIA_SIGNAL_ESTABLISH_ERROR: {
35 printf("Media signal established error!\n");
36 } break;
37 case RTC_MESSAGE_MEDIA_SIGNAL_RECEIVE_FISRT_AUDIO: {
38 printf("It received audio yet!\n");
39 } break;
40 case RTC_MESSAGE_MEDIA_SIGNAL_RECEIVE_FISRT_VIDEO: {
41 printf("It received video yet!\n");
42 } break;
43 case RTC_MESSAGE_MEDIA_SIGNAL_NO_RTP_STREAM_TIMEOUT: {
44 printf("Did't receive rtp stream because of timeout!\n");
45 } break;
46 case RTC_MESSAGE_ROOM_EVENT_REMOTE_LEAVING: {
47 printf("Feed leaving!\n");
48 } break;
49 case RTC_MESSAGE_STATE_STREAM_UP: {
50 printf("Stream up, send/got video now\n");
51 } break;
52 default:
53 break;
54 }
55}
56void brtc_video_call_put_image(int width, int height, const unsigned char *src,
57 int is_semi, int img_type) //回调解码后的视频数据显示
58{
59 printf("put image");
60}
61
62const char *s_url = "ws://rtc2.exp.bcelive.com:8186/janus";
63static void *client = NULL;
64int main(int argc, char* argv[])
65{
66 bool ret =false;
67 const char appId[] = "APPID_GET_FROM_BAIDU"; //please get a appId from baidu
68 const char token[] = "no_token";
69 const char room_name[] = "8000";
70 const char user_id[] = "1008";
71 if(client == NULL) {
72 client = brtc_create_client();
73 if (client == NULL) {
74 printf("brtc_create_client failed\n");
75 return -1;
76 }
77 }
78
79 if (client) {
80 brtc_register_message_listener(client, OnRtcMessage);
81 brtc_set_server_url(client, s_url);
82 ret = brtc_init_sdk(client, appId, room_name, user_id, token, NULL);
83 if (!ret) {
84 printf("brtc_init_sdk failed\n");
85 return -1;
86 }
87 while (!rtc_joined_room);
88
89 ret = brtc_login_room(client);
90 if (!ret) {
91 printf("brtc_login_room failed\n");
92 brtc_deInit_sdk(client);
93 brtc_destroy_client(client);
94 if(client)
95 client = NULL;
96 return -1;
97 }
98
99 while (true) {
100 printf("Please input q to Quit.\n");
101 char commandid[512];
102 memset(commandid, 0, sizeof(commandid));
103 int ret = scanf("%s", commandid);
104 printf("scanf %d.\n", ret);
105 if (ret < 0) {
106 continue;
107 }
108 if (commandid[0] == 'q') {
109 break;
110 }
111 }
112
113 ret = brtc_logout_room(client);
114 if (!ret) {
115 printf("brtc_logout_room failed\n");
116 brtc_deInit_sdk(client);
117 brtc_destroy_client(client);
118 if(client)
119 client = NULL;
120 return -1;
121 }
122 brtc_deInit_sdk(client);
123 brtc_destroy_client(client);
124 if(client)
125 client = NULL;
126 rtc_joined_room = false;
127 }
128
129 return 0;
130}
打包应用程序-依赖的文件列表
- libbrtc.a