- 小程序端呼叫设备视频分辨率没有办法固定吗?
小程序端呼叫设备(Linux)视频分辨率没有办法固定吗? 设备(Linux)接收到的视频分辨率是不固定的,有办法对手机端发送出的视频分辨率和旋转角度进行控制吗?
01-26 - linux运行小程序对讲demo,连续通话传入数据会崩溃的问题?
linux运行小程序对讲demo,在第二次通话接通后传入数据就出现了程序崩溃的问题,请问是有什么操作流程处理不当导致的吗?具体的修改方式和测试方法: 主函数修改部分如下: int main() { int as = 0; wx_voip_session_t session; as = 0; while(1){ if(0 == as){ /* 初始化 wmpf 框架 , * 使用了同步等待的方式,开发者可根据需求修改为异步+回调的方式 */ wx_error_t init_ret = voip_init_config(); if (init_ret != WXERROR_OK) { printf("voip init fail, %d\n", init_ret); return EXIT_FAILURE; } bool is_registered = false; wx_error_t is_reg_ret = wx_device_is_registered(&is_registered); if (is_reg_ret != WXERROR_OK) { printf("wx_device_is_registered fail, %d\n", is_reg_ret); return EXIT_FAILURE; } if (!is_registered) { printf("Device is not registered. Do registration now.\n"); // sn_ticket // 获取参考:https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/hardware-device/getSnTicket.html const char* sn_ticket = ""; wx_operation_t op = wx_device_register(sn_ticket); wx_error_t ret = wx_operation_wait(op, 0); if (ret != WXERROR_OK) { printf("wx_device_register fail, %d\n", ret); return EXIT_FAILURE; } } /* 创建一个 voip session */ //wx_voip_session_t session; wx_voip_member_t mem = { "", "", WX_VOIP_MEMBER_CAMERA_STATUS_OPEN }; wx_voip_session_config_t session_config = { 0, 0, 0 }; if (wx_voip_session_new(WX_VOIP_SESSION_VIDEO, WX_VOIP_SESSION_SCENE_IOT, &voip_session_listener, NULL, &mem, &session_config, &session) != WXERROR_OK) { printf("session new fail\n"); wx_stop(); return -1; } /* 发起呼叫 * username: 微信用户昵称(显示在通话页面中,可以填房间号之类的名称) * openid: 微信用户的 VoIP ID. */ wx_operation_t op = wx_voip_session_call(session, &mem); wx_operation_wait(op, 0); start_audio_thread(); start_camera_thread(); printf("ceshi 测试\n"); as = 1; } sleep(10); if(1 == as){ //strcmp(c, "q") == 0 stop_audio_thread(); stop_camera_thread(); printf("voip_status = %d\n", voip_status); if (voip_status == WX_VOIP_SESSION_TALKING) { wx_operation_t op = wx_voip_session_hangup(session, WX_VOIP_HANGUP_REASON_MANUAL); wx_operation_wait(op, 0); } wx_voip_session_destroy(session); wx_stop(); as = 0; sleep(3); } } return 0; } audio_impl.c修改部分: void start_audio_thread(void) { /* * 创建 play 线程用来播放设备收到微信端的数据 * 创建 record 线程用来发送数据给微信端,若开发者使用真实硬件,可能不需要创建线程,直接在录音数据的地方发送即可 * */ thread_exit = 0; pthread_create(&pid1, NULL, thread_audio_player, NULL); pthread_create(&pid2, NULL, thread_audio_record, NULL); } camera_impl.c修改部分: void start_camera_thread(void) { thread_exit = 0; pthread_create(&pid, NULL, thread_camera, NULL); } 运行结果是在第二次进入通话传入数据出现问题了。 程序崩溃的位置如下所示: 视频: stream->listener->data(stream->stream, stream->user_data, buffer, sz, 0, 0, WX_CAMERA_ROTATION_0, ts); 音频: stream->listener->data(stream->stream_in, stream->user_data, ts, buffer, THUNK_RECORD_DATA_SIZE); 在第二次通话进入到这个位置传入数据后就会出现问题。是需要对这部分的数据容器做清除处理吗?
2023-05-19