完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
这是我的main函数:
#include #include #include #include #include #include #include #include "simple_mpp.h"#define CAMERA1_ENABLE#define CAMERA2_ENABLE#define CAMERA3_ENABLE#ifdef CAMERA1_ENABLEFILE* camera1_file = NULL;void camera1_data_handler(unsigned int idx, unsigned int len, unsigned char* buf){ printf("camera1_data_handler, idx[%d] len[%d]n", idx, len); if (camera1_file == NULL) { camera1_file = fopen("camera1_data.h265", "wb"); } fwrite(buf, len, 1, camera1_file);}#endif#ifdef CAMERA2_ENABLEFILE* camera2_file = NULL;void camera2_data_handler(unsigned int idx, unsigned int len, unsigned char* buf){ printf("camera2_data_handler, idx[%d] len[%d]n", idx, len); if (camera2_file == NULL) { camera2_file = fopen("camera2_data.h265", "wb"); } fwrite(buf, len, 1, camera2_file);}#endif#ifdef CAMERA3_ENABLEFILE* camera3_file = NULL;void camera3_data_handler(unsigned int idx, unsigned int len, unsigned char* buf){ printf("camera3_data_handler, idx[%d] len[%d]n", idx, len); if (camera3_file == NULL) { camera3_file = fopen("camera3_data.h265", "wb"); } fwrite(buf, len, 1, camera3_file);}#endifstatic int loop_run_flag;static void signal_handler(int signal){ printf("signal [%d] exit.n", signal); loop_run_flag = 0;}int main(int argc, char *argv[]){ loop_run_flag = 1; signal(SIGINT, signal_handler); // crtc + c signal(SIGTERM, signal_handler); // killall simple_mpp_vb_init(3);#ifdef CAMERA1_ENABLE simple_mpp_config_t config1 = {0}; config1.ch = 0; config1.dev = 0; config1.width = 1280; config1.height = 720; config1.sensor_type = GC2093_MIPI_CSI2_1920X1080_30FPS_10BIT_LINEAR; config1.bitrate = 4000; simple_mpp_init(&config1);#endif#ifdef CAMERA2_ENABLE simple_mpp_config_t config2 = {0}; config2.ch = 1; config2.dev = 1; config2.width = 1280; config2.height = 720; config2.sensor_type = GC2093_MIPI_CSI1_1920X1080_30FPS_10BIT_LINEAR; config2.bitrate = 4000; simple_mpp_init(&config2);#endif#ifdef CAMERA3_ENABLE simple_mpp_config_t config3 = {0}; config3.ch = 2; config3.dev = 2; config3.width = 1280; config3.height = 720; config3.sensor_type = GC2093_MIPI_CSI0_1920X1080_30FPS_10BIT_LINEAR; config3.bitrate = 4000; simple_mpp_init(&config3);#endif while (loop_run_flag) {#ifdef CAMERA1_ENABLE simple_mpp_recv(&config1, camera1_data_handler);#endif#ifdef CAMERA2_ENABLE simple_mpp_recv(&config2, camera2_data_handler);#endif#ifdef CAMERA3_ENABLE simple_mpp_recv(&config3, camera3_data_handler);#endif }#ifdef CAMERA1_ENABLE simple_mpp_deinit(&config1); if (camera1_file != NULL) { fclose(camera1_file); }#endif#ifdef CAMERA2_ENABLE simple_mpp_deinit(&config2); if (camera2_file!= NULL) { fclose(camera2_file); }#endif#ifdef CAMERA3_ENABLE simple_mpp_deinit(&config3); if (camera3_file!= NULL) { fclose(camera3_file); }#endif simple_mpp_vb_deinit(); return 0;}这是我封装的MPP库头文件: #ifndef SIMPLE_MPP_H#define SIMPLE_MPP_H#include #include #include #include #include "k_module.h"#include "k_sensor_comm.h"#include "k_type.h"#include "k_vb_comm.h"#include "k_video_comm.h"#include "k_sys_comm.h"#include "mpi_vb_api.h"#include "mpi_venc_api.h"#include "mpi_sys_api.h"#include "mpi_sensor_api.h"#include "k_venc_comm.h"#include "mpi_vvi_api.h"typedef enum{ VENC_SAMPLE_STATUS_IDLE = 0, VENC_SAMPLE_STATUS_INIT, VENC_SAMPLE_STATUS_START, VENC_SAMPLE_STATUS_BINDED, VENC_SAMPLE_STATUS_UNBINDED, VENC_SAMPLE_STATUE_RUNING, VENC_SAMPLE_STATUS_STOPED, VENC_SAMPLE_STATUS_BUTT} simple_mpp_status_t;typedef struct { k_vicap_sensor_type sensor_type; int width; int height; unsigned int bitrate; // int chnum; int ch; int dev; simple_mpp_status_t status; unsigned int frame_cnt;} simple_mpp_config_t;int simple_mpp_vb_init(int ch_cnt);int simple_mpp_vb_deinit();int simple_mpp_init(simple_mpp_config_t* config);int simple_mpp_deinit(simple_mpp_config_t* config);int simple_mpp_recv(simple_mpp_config_t* config, void (*frame_handler)(unsigned int idx, unsigned int len, unsigned char* buf));#endif//SIMPLE_MPP_H当我执行编译后的文件,只拿一路相机数据的时候是没有问题的,但当我同时拿3路相机数据的时候就失败了,报错如下: msh />cd sdmsh />cd sdcard/msh /sdcard>lsDirectory /sdcard:app |
|
相关推荐
1个回答
|
|
问题分析在K230开发板上使用only_rtsmart镜像同时采集三路摄像头时出现错误,可能涉及以下原因:
解决方案1. 增大系统内存分配修改 2. 分时初始化摄像头避免三路摄像头同时初始化导致硬件资源冲突: 3. 为各通道分配独立缓存在回调函数中使用线程互斥锁避免文件写入冲突: 4. 关闭未使用的硬件资源如果某些摄像头未启用,需显式关闭对应资源: 5. 检查硬件连接与配置
完整修复代码示例关键调试步骤
通过以上步骤调整,三路摄像头采集应能稳定运行。若问题仍存在,建议联系官方获取针对only_rtsmart镜像的ISP驱动更新。 |
|
|
|
|
只有小组成员才能发言,加入小组>>
AI_cube训练模型得到了npy文件,没有kmodel文件
775 浏览 0 评论
请问K230 V3.0版本烧录固件和使用IDE到底是烧录哪个啊?
741 浏览 0 评论
444浏览 4评论
AI Cube进行yolov8n模型训练,创建项目目标检测时显示数据集目录下存在除标注和图片外的其他目录如何处理?
465浏览 3评论
autodl算力云在.pt转换onnx文件时正常,但onnx转.kmodel文件时报错,为什么?
554浏览 2评论
如何在大核rtt上把kd_mpi_vicap_start_stream三个摄像头各自出的流拼成一个流呢?
172浏览 2评论
573浏览 2评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-4 10:19 , Processed in 0.831757 second(s), Total 46, Slave 37 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
439
