# 3516dv500_app **Repository Path**: shumjj/3516dv500_app ## Basic Information - **Project Name**: 3516dv500_app - **Description**: 基于海思Hi3519(3516)DV500的简易demo - **Primary Language**: C/C++ - **License**: GPL-3.0 - **Default Branch**: develop - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 40 - **Forks**: 27 - **Created**: 2023-12-25 - **Last Updated**: 2026-04-20 ## Categories & Tags **Categories**: hardware **Tags**: None ## README # 3516(3519)dv500_app #### 介绍 海思3519dv500(3516dv500) demo(基于020/021 glibc sdk),可以在官方开发板上运行,演示如下功能: - H264/H265 rtsp服务 - H264/H265 rtmp推流服务(H265使用ID=0xC方案) - OSD(时间)功能 - 海思AIISP - 海思图像自适应(scene_auto) - 海思编码自适应 - Mp4文件保存 - 抓拍JPG - Yolov5(通过rtsp视频验证) - vo(BT1120 1080p@60) 当前支持的sensor为: | sensor型号 | 说明 | | ---- | ---- | | HY_S0603 | 3519dv500官方开发板(新)sensor型号 | | OS08A20 | 3519dv500官方开发板(旧)sensor型号 | | OS04A10 | 3516dv500官方开发板(旧)sensor型号 | #### 流程图 ```mermaid flowchart LR vi["vi/mpi"] vpss_grp0["vpss grp 0 (和vi相同分辨率)"] vpss_chn0["vpss chn0 (和vi相同分辨率)"] 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["yolov5"] vi-->vpss_grp0 vpss_grp0---->jpg_save vpss_grp0-->vpss_chn0 vpss_chn0-->venc_main-->rtsp_stream1 vpss_chn0-->venc_sub-->rtsp_stream2 vpss_grp0-->vpss_chn1-->ai-->rtsp_stream3 venc_main-->mp4 ``` #### 编译方法 以下为sdk 021的编译方法,如果是sdk 020,需要修改相应的路径 1. 按照Hi3519DV500_SDK_V2.0.2.1/smp/a55_linux/source/bsp/readme_cn.txt文档编译SDK 2. 按照如下命令,编译app ``` cd Hi3519DV500_SDK_V2.0.2.1/smp/a55_linux/source/mpp/sample git clone https://gitee.com/shumjj/3516dv500_app.git cd 3516dv500_app make ``` #### 运行 ``` //step1: 复制rootfs/opt/ceanic到板子/opt/目录 cp /mnt/rootfs/opt/ceanic /opt/ -Rdp //step2: 加载ko cd /opt/ceanic/ko ./load3519dv500 -i //step3: 运行app(需要确保/opt/ceanic/etc/vi.json中的sensor和板子匹配) cd /opt/ceanic/bin ./ceanic_app ``` #### 目录结构 ``` ├── 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 //yolov5 stream(需要配置文件/opt/ceanic/yolov5/yolov5.json中开启yolov5) 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,且main_url和sub_url值设置正确 2. 查看/opt/ceanic/etc/venc.json中编码类型是h264还是h265 3. 启动rtmp推流测试服务器,例如:https://github.com/illuspas/nginx-rtmp-win32 (该nginx支持h264/h265,h265使用ID=0xC方案) 4. 运行设备程序ceanic_app,运行成功的话,设备会connect到服务器,并发布视频(发布视频的url见第一步中的main_url和sub_url) 5. 运行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 马佳君