From 10034550518b0c0d8e722d05c23850fd96c4a3f0 Mon Sep 17 00:00:00 2001 From: hehaoyang Date: Thu, 1 Aug 2024 14:57:21 +0800 Subject: [PATCH] =?UTF-8?q?1.=20=E6=B7=BB=E5=8A=A0=E5=BC=80=E6=9C=BA?= =?UTF-8?q?=E8=87=AA=E5=8A=A8=E8=8E=B7=E5=8F=96=E6=B5=81=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E7=9A=84=E6=93=8D=E4=BD=9C;=202.=20=E6=B7=BB=E5=8A=A0=20proces?= =?UTF-8?q?s-monitor.sh=20=E8=BF=9B=E7=A8=8B=E7=9B=91=E6=8E=A7=E8=84=9A?= =?UTF-8?q?=E6=9C=AC;=203.=20=E6=9B=B4=E6=96=B0rtsp-server=E7=A8=8B?= =?UTF-8?q?=E5=BA=8F;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../recipes/hvgo-tvis/files/hvgo.c | 1 + .../files/autostart/autostart.sh | 10 ++++++++-- .../files/process-monitor/process-monitor.sh | 14 ++++++++++++++ .../files/rtsp-server/rtsp-server | Bin 60688 -> 86048 bytes .../system-environment-tvis.bb | 14 ++++++++++---- 5 files changed, 33 insertions(+), 6 deletions(-) create mode 100644 yocto/meta-tvis-app/recipes/system-environment-tvis/files/process-monitor/process-monitor.sh diff --git a/yocto/meta-tvis-app/recipes/hvgo-tvis/files/hvgo.c b/yocto/meta-tvis-app/recipes/hvgo-tvis/files/hvgo.c index 8983cf5d36..39734a0265 100755 --- a/yocto/meta-tvis-app/recipes/hvgo-tvis/files/hvgo.c +++ b/yocto/meta-tvis-app/recipes/hvgo-tvis/files/hvgo.c @@ -8,6 +8,7 @@ typedef struct } version; static version versions[] = { + {"V1.21 20240801", "1. 添加开机自动获取流数据的操作; 2. 添加 process-monitor.sh 进程监控脚本; 3. 更新rtsp-server程序; "}, {"V1.20 20240730", "1. 解决找不到 multimedia 模块的问题; 2. RS485控制IO修改为TP19, 解决无法正常收发的问题; 3. 网络初始化脚本新增10s延时; 4, USB 3.0 开机默认为host模式; "}, {"V1.19 20240722", "1. 删除 network-initialization, rtsp-server 服务, 新增 autostart.service 服务实现自启动脚本; 2. 更新 netcore 环境位置; "}, {"V1.18 20240720", "1. 更新automountsdcard.sh 脚本, 修改硬盘挂载点为: /media/harddisk* U盘: /media/udisk* SD卡: /media/sdcard; 2. 修改network-config脚本; 3. 支持U盘升级固件的功能; 4. 支持hddtemp sysstat 工具;"}, diff --git a/yocto/meta-tvis-app/recipes/system-environment-tvis/files/autostart/autostart.sh b/yocto/meta-tvis-app/recipes/system-environment-tvis/files/autostart/autostart.sh index 70e6a01154..9caa4c79fd 100644 --- a/yocto/meta-tvis-app/recipes/system-environment-tvis/files/autostart/autostart.sh +++ b/yocto/meta-tvis-app/recipes/system-environment-tvis/files/autostart/autostart.sh @@ -1,7 +1,13 @@ #!/bin/bash +# 开机先做一次取流操作 +v4l2-ctl --verbose -d /dev/video0 --set-fmt-video=width=640,height=360,pixelformat=NV12 --stream-mmap=16 --stream-count=10 --stream-to=/userdata/cap0.yuv --stream-poll & +v4l2-ctl --verbose -d /dev/video1 --set-fmt-video=width=640,height=360,pixelformat=NV12 --stream-mmap=16 --stream-count=10 --stream-to=/userdata/cap1.yuv --stream-poll & +v4l2-ctl --verbose -d /dev/video2 --set-fmt-video=width=640,height=360,pixelformat=NV12 --stream-mmap=16 --stream-count=10 --stream-to=/userdata/cap2.yuv --stream-poll & +v4l2-ctl --verbose -d /dev/video3 --set-fmt-video=width=640,height=360,pixelformat=NV12 --stream-mmap=16 --stream-count=10 --stream-to=/userdata/cap3.yuv --stream-poll & + #hvgo set-network false 192.168.1.249 & # 测试,修改外网IP地址为 249 echo "host" >/sys/devices/platform/fe8a0000.usb2-phy/otg_mode & # 切换成host模式 # echo "peripheral" >/sys/devices/platform/fe8a0000.usb2-phy/otg_mode & # 切换成peripheral模式 -rtsp-server & # RTSP-SERVER 程序 -/etc/tvis/network/initialization.sh & # eth0、WIFI 网络初始化脚本 \ No newline at end of file +/etc/tvis/network/initialization.sh & # eth0、WIFI 网络初始化脚本 +process-monitor.sh rtsp-server & # RTSP-SERVER 程序 \ No newline at end of file diff --git a/yocto/meta-tvis-app/recipes/system-environment-tvis/files/process-monitor/process-monitor.sh b/yocto/meta-tvis-app/recipes/system-environment-tvis/files/process-monitor/process-monitor.sh new file mode 100644 index 0000000000..ce4dc5c0dc --- /dev/null +++ b/yocto/meta-tvis-app/recipes/system-environment-tvis/files/process-monitor/process-monitor.sh @@ -0,0 +1,14 @@ +#!/bin/bash + +APP=$1 # 进程名称 + +if [ ! -n "$APP" ];then + exit 1 +fi + +while true; do + if ! pgrep -x $APP > /dev/null; then + eval $* + fi + sleep 1 +done \ No newline at end of file diff --git a/yocto/meta-tvis-app/recipes/system-environment-tvis/files/rtsp-server/rtsp-server b/yocto/meta-tvis-app/recipes/system-environment-tvis/files/rtsp-server/rtsp-server index cf8de7eb2f3c6ce3d02bc43e51842dfd485fe84a..8750413ce5f61af27be740ef1c4757d96d80543e 100644 GIT binary patch literal 86048 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 P55ICpL!S2l-fi#~Zqx^= literal 60688 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 diff --git a/yocto/meta-tvis-app/recipes/system-environment-tvis/system-environment-tvis.bb b/yocto/meta-tvis-app/recipes/system-environment-tvis/system-environment-tvis.bb index 252203da7c..ed5bab7dd4 100644 --- a/yocto/meta-tvis-app/recipes/system-environment-tvis/system-environment-tvis.bb +++ b/yocto/meta-tvis-app/recipes/system-environment-tvis/system-environment-tvis.bb @@ -6,6 +6,7 @@ LICENSE = "CLOSED" SRC_URI += "file://.dotnet" SRC_URI += "file://autostart" SRC_URI += "file://network" +SRC_URI += "file://process-monitor" SRC_URI += "file://rtsp-server" S = "${WORKDIR}" @@ -23,9 +24,12 @@ do_install() { chmod 777 -R ${D}/etc/tvis/.dotnet ln -sf /etc/tvis/.dotnet/dotnet ${D}/usr/bin/dotnet - # autostart 脚本 + # autostart, process-monitor 脚本 install -d ${D}/etc/tvis/ install -m 0755 ${WORKDIR}/autostart/autostart.sh -D ${D}/etc/tvis/autostart.sh + install -m 0755 ${WORKDIR}/process-monitor/process-monitor.sh -D ${D}/etc/tvis/process-monitor.sh + ln -sf /etc/tvis/autostart.sh ${D}/usr/bin/autostart.sh + ln -sf /etc/tvis/process-monitor.sh ${D}/usr/bin/process-monitor.sh # 网络初始化脚本 install -d ${D}/etc/systemd/system/ @@ -41,9 +45,11 @@ do_install() { install -m 0755 ${WORKDIR}/network/config.sh -D ${D}/etc/NetworkManager/dispatcher.d/10-network-config.sh # rtsp-server 工具 - install -d ${D}${bindir} - install -m 0755 ${WORKDIR}/rtsp-server/rtsp-server ${D}${bindir} - install -m 0755 ${WORKDIR}/rtsp-server/mkv-rtsp-server ${D}${bindir} + install -d ${D}/etc/tvis/rtsp-server + cp -rf ${S}/rtsp-server/* ${D}/etc/tvis/rtsp-server + chmod 777 -R ${D}/etc/tvis/rtsp-server + ln -sf /etc/tvis/rtsp-server/rtsp-server ${D}/usr/bin/rtsp-server + ln -sf /etc/tvis/rtsp-server/mkv-rtsp-server ${D}/usr/bin/mkv-rtsp-server } FILES_${PN} += "/etc/*"