# 3516cv610_app **Repository Path**: shumjj/3516cv610_app ## Basic Information - **Project Name**: 3516cv610_app - **Description**: demo for 3516cv610 - **Primary Language**: C/C++ - **License**: GPL-3.0 - **Default Branch**: develop - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 38 - **Forks**: 32 - **Created**: 2024-04-17 - **Last Updated**: 2026-04-16 ## Categories & Tags **Categories**: hardware **Tags**: None ## README # 3516cv610 演示程序 #### 介绍 海思3516cv610 10B/20S demo(基于020或021 sdk),可以在官方开发板上运行,演示如下功能: - H264/H265 + AAC/G711U rtsp服务 - H264/H265 + AAC/G711U rtmp推流服务(H265使用ID=0xC方案) - OSD(时间)功能 - 海思图像自适应(scene_auto) - Mp4文件保存(建议os在48M以上使用,否则会引起oom killer错误) - aidetect - yolov8(只支持20s上运行,且无法和aidetect同时运行) + svc编码 - jpg抓拍 - AIISP(功能演示,SC4336P为BGGR,强制转RGGB,会导致颜色异常) - LDC畸变校正 - WDR(GC8613,4k@20) 当前支持的sensor为: | sensor型号 | 说明 | | ---- | ---- | | HY006_3814_0011 | 官方开发板(新)sensor型号 | | SC4336P | 官方开发板(旧)sensor型号 | | GC8613 | | | GC4023 | | #### 流程图 ```mermaid flowchart LR vi["vi/mpi"] vpss_grp0["vpss grp 0 (和vi相同分辨率)"] vpss_chn0["vpss chn0 (和venc main相同分辨率)"] vpss_chn1["vpss chn1 (缩放至640x640)"] venc_main["venc main (分辨率大小由venc.json中指定)"] venc_sub["venc_sub (固定720x480)"] rtsp_stream1["rtsp stream1"] rtsp_stream2["rtsp stream2"] rtsp_stream3["rtsp stream3"] jpg_save["jpg 保存"] mp4["mp4保存"] ai["aidetect/yolov5"] vi-->vpss_grp0 vpss_grp0-->vpss_chn0---->jpg_save vpss_grp0-->vpss_chn1-->ai--->rtsp_stream3 vpss_chn0-->venc_main--->mp4 venc_main--->rtsp_stream1 venc_main-->venc_sub-->rtsp_stream2 ``` #### 编译方法 1. sdk unpack后需要参考Hi3516CV610R001C01SPC021\SMP_Linux_GCC_musl\02.only for reference\Hi3516CV610_AIComponent_readme.txt打上Aidetect补丁 ```` ./Hi3516CV610_AIComponent_patch.sh ss ```` 2. 按照Hi3516CV610_SDK_V1.0.2.1/smp/a7_linux/source/bsp/readme_cn.txt文档编译SDK ```` //step1:调用Hi3516CV610_SDK_V1.0.2.1/scripts/installed_package_check.sh检查编译环境 cd Hi3516CV610_SDK_V1.0.2.1/scripts/ chmod +x installed_package_check.sh ./installed_package_check.sh //step2:按照文档(Hi3516CV610╱Hi3516CV608 SDK 安装及升级使用说明.pdf 1.6章节),下载linux-5.10.221.tar.gz和mtd-utils-2.1.4.tar.bz2 到相应的open_source目录 //step3:20s编译SDK例子 cd Hi3516CV610_SDK_V1.0.2.1/smp/a7_linux/source/bsp make LIB_TYPE=musl CHIP=hi3516cv610 DEBUG=1 REGBIN_XLSM=Hi3516CV610-DMEB_4L_DDR3_2133M_128MB_16bit-A7_950M_QFN.xlsm all //step3:10b编译SDK例子 cd Hi3516CV610_SDK_V1.0.2.1/smp/a7_linux/source/bsp make LIB_TYPE=musl CHIP=hi3516cv610 DEBUG=1 REGBIN_XLSM=Hi3516CV610-DMEB_4L_DDR2_1333M_64MB_16bit-A7_950M_QFN.xlsm all ```` 3. 编译app ``` cd Hi3516CV610_SDK_V1.0.2.1/smp/a7_linux/source/mpp/sample git clone https://gitee.com/shumjj/3516cv610_app.git cd 3516cv610_app make ``` #### 运行 ``` //复制getee上rootfs/opt/ceanic到板端 //查看/opt/ceanic/etc/vi.json中sensor的name是否和板子匹配,默认是sc4336p //查看/opt/ceanic/etc/venc.json中的编码参数是否正确,默认是sc4336p的编码参数 cp rootfs/opt/ceanic /opt/ -Rdp //加载ko,10b请加载相应的脚本,需要注意下sensor参数是否匹配(影响sys_config.ko中的sensor时钟设置) cd /opt/ceanic/ko/load3516cv610/ ./load3516cv610_20s_debug -i //如果要运行yolov8(20s上支持),需要将libsvp_aicpu.so放到环境变量 export LD_LIBRARY_PATH=/opt/ceanic/lib:$LD_LIBRARY_PATH cd /opt/ceanic/bin ./ceanic_app //CTRL+C退出 ``` #### 目录结构 ``` ├── app_std.h //app头文件 ├── device //海思设备相关 ├── doc //doc ├── json //json库 ├── log //log库 ├── main.cpp ├── Makefile ├── README.md ├── rootfs //SDK rootfs修改部分 ├── rtmp //rtmp 实现 ├── rtsp //rtsp 实现 ├── thirdlibrary //第三方库 └── util //通用头文件 ``` #### RTSP ##### RTSP URL url为: ``` //main stream rtsp://192.168.10.98/stream1 //sub stream rtsp://192.168.10.98/stream2 //yolov8 stream(需要配置文件中开启yolov8) //因为性能限制,如果使用vlc连接yolov8视频,需要开大vlc缓存(建议开到2000ms) rtsp://192.168.10.98/stream3 ``` ```mermaid sequenceDiagram participant A as 板端APP participant B as Potplayer/VLC B ->> A: 请求播放 A ->> B: 数据传输 ``` ##### VLC连接RTSP vlc连接方法:媒体->打开网络串流->输入RTSP URL ![avatar](doc/rtsp_open.jpg) #### RTMP ##### RTMP测试流程 1. 板端修改/opt/ceanic/etc/net_service.json中enable为1 2. 板端确认/opt/ceanic/etc/venc.json中编码类型 3. PC端启动rtmp推流测试服务器,例如:https://github.com/illuspas/nginx-rtmp-win32 (该nginx支持h264/h265,h265使用ID=0xC方案) 4. 板端运行设备程序ceanic_app,运行成功的话,设备会connect到服务器,并发布视频(发布的视频url在net_service.json中设置) 5. PC端运行rtmp拉流播放器,如果编码类型为h264,可以使用vlc或potplayer,如果编码类型为h265,需要第三方播放器(使用ID=0xC方案),例如:https://gitee.com/icze1i0n/RtmpPlayer(此播放器播放4K异常,可以用1080p h265来验证) ```mermaid sequenceDiagram participant A as 板端APP participant B as Nginx participant C as Potplayer/VLC A ->> B: 发布主/子码流数据 C ->> B: 请求播放 B ->> C: 数据传输 ``` ##### VLC连接RTMP(只支持H264) vlc连接方法:媒体->打开网络串流->输入RTMP URL ![avatar](doc/rtmp_open.jpg) #### 配置文件说明 [配置文件说明](doc/set.md) #### 合作交流 联系方式: 深圳思尼克技术有限公司 jiajun.ma@ceanic.com 马佳君