Skip to content

Commit 97da283

Browse files
committed
機能追加:
- RTSP dual stream対応のGUIを追加 - RTSP dual stream対応でscriptを修正
1 parent c3dd6c1 commit 97da283

File tree

3 files changed

+63
-47
lines changed

3 files changed

+63
-47
lines changed

overlay_rootfs/scripts/hack_ini_reconfig

+27-18
Original file line numberDiff line numberDiff line change
@@ -3,28 +3,37 @@
33
HACK_INI=/media/mmc/hack.ini
44

55
STORAGE_SDCARD_PATH=$(awk -F "=" '/STORAGE_SDCARD_PATH *=/ {print $2}' $HACK_INI)
6-
[ "$STORAGE_SDCARD_PATH" != "" ] && exit 0
76
STORAGE_CIFS_PATH=$(awk -F "=" '/STORAGE_CIFS_PATH *=/ {print $2}' $HACK_INI)
8-
[ "$STORAGE_CIFS_PATH" != "" ] && exit 0
97
STORAGE_SDCARD_REMOVE=$(awk -F "=" '/STORAGE_SDCARD_REMOVE *=/ {print $2}' $HACK_INI)
10-
[ "$STORAGE_SDCARD_REMOVE" != "" ] && exit 0
118
STORAGE_SDCARD_REMOVE_DAYS=$(awk -F "=" '/STORAGE_SDCARD_REMOVE_DAYS *=/ {print $2}' $HACK_INI)
12-
[ "$STORAGE_SDCARD_REMOVE_DAYS" != "" ] && exit 0
9+
if [ "$STORAGE_SDCARD_PATH" = "" ] && [ "$STORAGE_CIFS_PATH" = "" ] && [ "$STORAGE_SDCARD_REMOVE" = "" ] && [ "$STORAGE_SDCARD_REMOVE_DAYS" != "" ] ; then
10+
RECORDING_PATH=$(awk -F "=" '/RECORDING_PATH *=/ {gsub(/\\/, "/");print $2}' $HACK_INI)
11+
STORAGE_REMOVE=$(awk -F "=" '/STORAGE_REMOVE *=/ {print $2}' $HACK_INI)
12+
STORAGE_REMOVE_DAYS=$(awk -F "=" '/STORAGE_REMOVE_DAYS *=/ {print $2}' $HACK_INI)
13+
STORAGE_CIFSSERVER=$(awk -F "=" '/STORAGE_CIFSSERVER *=/ {gsub(/\\/, "/");print $2}' $HACK_INI)
14+
grep -v '^RECORDING_PATH *=' $HACK_INI | grep -v '^STORAGE_REMOVE *=' | grep -v '^STORAGE_REMOVE_DAYS *=' | grep -v 'STORAGE_CIFSSERVER *=' > ${HACK_INI}_new
15+
echo "STORAGE_SDCARD_PATH=${RECORDING_PATH}" >> ${HACK_INI}_new
16+
echo "STORAGE_SDCARD_REMOVE=${STORAGE_REMOVE}" >> ${HACK_INI}_new
17+
echo "STORAGE_SDCARD_REMOVE_DAYS=${STORAGE_REMOVE_DAYS}" >> ${HACK_INI}_new
18+
echo "STORAGE_CIFSSERVER=${STORAGE_CIFSSERVER}" >> ${HACK_INI}_new
19+
echo "STORAGE_CIFS_PATH=${RECORDING_PATH}" >> ${HACK_INI}_new
20+
mv -f ${HACK_INI}_new ${HACK_INI}
21+
cp ${HACK_INI} /tmp/hack.ini
22+
chmod 666 /tmp/hack.ini
23+
fi
1324

14-
RECORDING_PATH=$(awk -F "=" '/RECORDING_PATH *=/ {gsub(/\\/, "/");print $2}' $HACK_INI)
15-
STORAGE_REMOVE=$(awk -F "=" '/STORAGE_REMOVE *=/ {print $2}' $HACK_INI)
16-
STORAGE_REMOVE_DAYS=$(awk -F "=" '/STORAGE_REMOVE_DAYS *=/ {print $2}' $HACK_INI)
17-
STORAGE_CIFSSERVER=$(awk -F "=" '/STORAGE_CIFSSERVER *=/ {gsub(/\\/, "/");print $2}' $HACK_INI)
18-
19-
grep -v '^RECORDING_PATH *=' $HACK_INI | grep -v '^STORAGE_REMOVE *=' | grep -v '^STORAGE_REMOVE_DAYS *=' | grep -v 'STORAGE_CIFSSERVER *=' > ${HACK_INI}_new
20-
echo "STORAGE_SDCARD_PATH=${RECORDING_PATH}" >> ${HACK_INI}_new
21-
echo "STORAGE_SDCARD_REMOVE=${STORAGE_REMOVE}" >> ${HACK_INI}_new
22-
echo "STORAGE_SDCARD_REMOVE_DAYS=${STORAGE_REMOVE_DAYS}" >> ${HACK_INI}_new
23-
echo "STORAGE_CIFSSERVER=${STORAGE_CIFSSERVER}" >> ${HACK_INI}_new
24-
echo "STORAGE_CIFS_PATH=${RECORDING_PATH}" >> ${HACK_INI}_new
25-
mv -f ${HACK_INI}_new ${HACK_INI}
26-
cp ${HACK_INI} /tmp/hack.ini
27-
chmod 666 /tmp/hack.ini
25+
RTSP_VIDEO0=$(awk -F "=" '/RTSP_VIDEO0 *=/ {print $2}' $HACK_INI)
26+
RTSP_AUDIO0=$(awk -F "=" '/RTSP_AUDIO0 *=/ {print $2}' $HACK_INI)
27+
if [ "$RTSP_VIDEO0" = "" ] && [ "$RTSP_AUDIO0" = "" ] ; then
28+
RTSPSERVER=$(awk -F "=" '/RTSPSERVER *=/ {print $2}' $HACK_INI)
29+
RTS_AUDIO=$(awk -F "=" '/RTS_AUDIO *=/ {print $2}' $HACK_INI)
30+
grep -v '^RTSPSERVER *=' $HACK_INI | grep -v '^RTS_AUDIO *=' > ${HACK_INI}_new
31+
echo "RTSP_VIDEO0=${RTSPSERVER}" >> ${HACK_INI}_new
32+
echo "RTSP_AUDIO0=${RTS_AUDIO}" >> ${HACK_INI}_new
33+
mv -f ${HACK_INI}_new ${HACK_INI}
34+
cp ${HACK_INI} /tmp/hack.ini
35+
chmod 666 /tmp/hack.ini
36+
fi
2837

2938
for i in `ls /media/mmc/atomhack.log.? /media/mmc/healthcheck.log.? 2> /dev/null`
3039
do

overlay_rootfs/scripts/rtspserver.sh

+10-14
Original file line numberDiff line numberDiff line change
@@ -14,37 +14,33 @@ if [ "$1" = "off" -o "$1" = "restart" ]; then
1414
fi
1515

1616
HACK_INI=/tmp/hack.ini
17+
RTSP_VIDEO0=$(awk -F "=" '/RTSP_VIDEO0 *=/ {print $2}' $HACK_INI)
18+
RTSP_AUDIO0=$(awk -F "=" '/RTSP_AUDIO0 *=/ {print $2}' $HACK_INI)
19+
RTSP_VIDEO1=$(awk -F "=" '/RTSP_VIDEO1 *=/ {print $2}' $HACK_INI)
20+
RTSP_AUDIO1=$(awk -F "=" '/RTSP_AUDIO1 *=/ {print $2}' $HACK_INI)
1721
RTSP_OVER_HTTP=$(awk -F "=" '/RTSP_OVER_HTTP *=/ {print $2}' $HACK_INI)
18-
RTSP_AUDIO=$(awk -F "=" '/RTSP_AUDIO *=/ {print $2}' $HACK_INI)
19-
RTSPSERVER=$(awk -F "=" '/RTSPSERVER *=/ {print $2}' $HACK_INI)
2022

2123
if [ "$1" = "watchdog" ]; then
2224
[ "$RTSPSERVER" = "on" ] || exit 0
2325
pidof v4l2rtspserver > /dev/null && exit 0
2426
fi
2527

2628
if [ "$1" = "on" -o "$1" = "restart" -o "$1" = "watchdog" -o "$RTSPSERVER" = "on" ]; then
27-
/scripts/cmd video 0 on > /dev/null
28-
/scripts/cmd audio 0 on > /dev/null
29-
#/scripts/cmd video 1 on > /dev/null
30-
#/scripts/cmd audio 1 on > /dev/null
29+
/scripts/cmd video 0 $RTSP_VIDEO0 > /dev/null
30+
/scripts/cmd video 1 $RTSP_VIDEO1 > /dev/null
31+
/scripts/cmd audio 0 $RTSP_AUDIO0 > /dev/null
32+
/scripts/cmd audio 1 $RTSP_AUDIO1 > /dev/null
3133
if ! pidof v4l2rtspserver > /dev/null ; then
3234
while netstat -ltn 2> /dev/null | egrep ":(8554|8080)"; do
3335
sleep 0.5
3436
done
3537
echo `date +"%Y/%m/%d %H:%M:%S"` ": v4l2rtspserever start"
3638
if [ "$RTSP_OVER_HTTP" = "on" ] ; then
37-
/usr/bin/v4l2rtspserver -p 8080 -C 1 -a S16_LE -l 0 /dev/video0,hw:Loopback,0 >> /tmp/log/rtspserver.log 2>&1 &
38-
#/usr/bin/v4l2rtspserver -p 8080 -C 1 -a S16_LE -l 0 /dev/video0,hw:Loopback,0 /dev/video1,hw:Loopback,1 >> /tmp/log/rtspserver.log 2>&1 &
39+
/usr/bin/v4l2rtspserver -p 8080 -C 1 -a S16_LE -l 0 /dev/video0,hw:Loopback,0 /dev/video1,hw:Loopback,1 >> /tmp/log/rtspserver.log 2>&1 &
3940
else
40-
/usr/bin/v4l2rtspserver -C 1 -a S16_LE -l 0 /dev/video0,hw:Loopback,0 >> /tmp/log/rtspserver.log 2>&1 &
41-
#/usr/bin/v4l2rtspserver -C 1 -a S16_LE -l 0 /dev/video0,hw:Loopback,0 /dev/video1,hw:Loopback,1 >> /tmp/log/rtspserver.log 2>&1 &
41+
/usr/bin/v4l2rtspserver -C 1 -a S16_LE -l 0 /dev/video0,hw:Loopback,0 /dev/video1,hw:Loopback,1 >> /tmp/log/rtspserver.log 2>&1 &
4242
fi
4343
fi
44-
if [ "$RTSP_AUDIO" != "on" ] ; then
45-
/scripts/cmd audio 0 off > /dev/null
46-
/scripts/cmd audio 1 off > /dev/null
47-
fi
4844
while [ "`pidof v4l2rtspserver`" = "" ]; do
4945
sleep 0.5
5046
done

web/source/vue/Setting.vue

+26-15
Original file line numberDiff line numberDiff line change
@@ -76,10 +76,13 @@
7676
<SettingInput v-if="storage_cifs && config.STORAGE_CIFS_REMOVE === 'on'" title="保存日数" :titleOffset="2" :span="3" tooltip="指定日数後に削除します" type="number" v-model="config.STORAGE_CIFS_REMOVE_DAYS" :min="1" />
7777

7878
<h3>ストリーミング</h3>
79-
<SettingSwitch title="RTSP" tooltip="RTSPサーバーを起動します" v-model="config.RTSPSERVER" />
80-
<SettingSwitch v-if="config.RTSPSERVER === 'on'" title="音声" :titleOffset="2" tooltip="RTSPの音声を設定します" v-model="config.RTSP_AUDIO" />
81-
<SettingSwitch v-if="config.RTSPSERVER === 'on'" title="RTSP over HTTP" :titleOffset="2" tooltip="RTSPをHTTP経由で配信します" v-model="config.RTSP_OVER_HTTP" />
82-
<SettingInput v-if="config.RTSPSERVER === 'on'" title="RTSP URL" :titleOffset="2" :span="10" tooltip="VLC playerなどにURLをcopy&pasteしてください" type="readonly" v-model="RtspUrl" :min="1" />
79+
<SettingSwitch title="RTSP Main" tooltip="RTSP Main(1080p AVC)を開始します" v-model="config.RTSP_VIDEO0" />
80+
<SettingSwitch v-if="config.RTSP_VIDEO0 === 'on'" title="音声" :titleOffset="2" tooltip="RTSP Mainの音声を設定します" v-model="config.RTSP_AUDIO0" />
81+
<SettingInput v-if="config.RTSP_VIDEO0 === 'on'" title="URL" :titleOffset="2" :span="10" tooltip="VLC playerなどにURLをcopy&pasteしてください" type="readonly" v-model="RtspUrl0" :min="1" />
82+
<SettingSwitch title="RTSP Sub" tooltip="RTSP Sub(360p HEVC)を開始します" v-model="config.RTSP_VIDEO1" />
83+
<SettingSwitch v-if="config.RTSP_VIDEO1 === 'on'" title="音声" :titleOffset="2" tooltip="RTSP Subの音声を設定します" v-model="config.RTSP_AUDIO1" />
84+
<SettingInput v-if="config.RTSP_VIDEO1 === 'on'" title="URL" :titleOffset="2" :span="10" tooltip="VLC playerなどにURLをcopy&pasteしてください" type="readonly" v-model="RtspUrl1" :min="1" />
85+
<SettingSwitch v-if="(config.RTSP_VIDEO0 === 'on') || (config.RTSP_VIDEO1 === 'on')" title="RTSP over HTTP" :titleOffset="2" tooltip="RTSPをHTTP経由で配信します" v-model="config.RTSP_OVER_HTTP" />
8386

8487
<h3>イベント通知</h3>
8588
<SettingSwitch title="WebHook" tooltip="WebHookを設定します" v-model="config.WEBHOOK" />
@@ -179,9 +182,11 @@
179182
REBOOT_SCHEDULE: '0 2 * * 7', // -> /var/spool/crontabs/root
180183
RECORDING_LOCAL_SCHEDULE: 'off',
181184
RECORDING_LOCAL_SCHEDULE_LIST: '', // -> /media/mmc/local_schedule
182-
RTSPSERVER: 'off',
185+
RTSP_VIDEO0: 'off',
186+
RTSP_AUDIO0: 'off',
187+
RTSP_VIDEO1: 'off',
188+
RTSP_AUDIO1: 'off',
183189
RTSP_OVER_HTTP: 'off',
184-
RTSP_AUDIO: 'off',
185190
STORAGE_SDCARD: 'on', // on(alarm & record), alarm, record, off
186191
STORAGE_SDCARD_PUBLISH: 'off',
187192
STORAGE_SDCARD_PATH: '%Y%m%d/%H%M%S',
@@ -275,9 +280,13 @@
275280
isSwing() {
276281
return !this.rebooting && this.posValid && (this.config.PRODUCT_MODEL === 'ATOM_CAKP1JZJP');
277282
},
278-
RtspUrl() {
283+
RtspUrl0() {
279284
const port = (this.config.RTSP_OVER_HTTP === 'on') ? 8080 : 8554;
280-
return `rtsp://${window.location.host}:${port}/unicast`;
285+
return `rtsp://${window.location.host}:${port}/video0_unicast`;
286+
},
287+
RtspUrl1() {
288+
const port = (this.config.RTSP_OVER_HTTP === 'on') ? 8080 : 8554;
289+
return `rtsp://${window.location.host}:${port}/video1_unicast`;
281290
},
282291
},
283292
async mounted() {
@@ -619,19 +628,21 @@
619628
this.rebootStart = new Date();
620629
this.rebootStart.setSeconds(this.rebootStart.getSeconds() + 30);
621630
} else {
622-
if((this.config.RTSPSERVER !== this.oldConfig.RTSPSERVER) && (this.config.RTSPSERVER === "off")) {
623-
execCmds.push(`rtspserver ${this.config.RTSPSERVER}`);
631+
if(((this.config.RTSP_VIDEO0 !== this.oldConfig.RTSP_VIDEO0) ||
632+
(this.config.RTSP_VIDEO1 !== this.oldConfig.RTSP_VIDEO1)) &&
633+
(this.config.RTSP_VIDEO0 === "off") && (this.config.RTSP_VIDEO1 === "off")) {
634+
execCmds.push('rtspserver off');
624635
}
625636
if(this.config.STORAGE_SDCARD_PUBLISH !== this.oldConfig.STORAGE_SDCARD_PUBLISH) {
626637
execCmds.push(`samba ${this.config.STORAGE_SDCARD_PUBLISH}`);
627638
}
628-
if(((this.config.RTSPSERVER !== this.oldConfig.RTSPSERVER) ||
629-
(this.config.RTSP_AUDIO !== this.oldConfig.RTSP_AUDIO) ||
630-
(this.config.RTSP_OVER_HTTP !== this.oldConfig.RTSP_OVER_HTTP)) &&
631-
(this.config.RTSPSERVER === "on")) {
639+
if((this.config.RTSP_VIDEO0 === "on") || (this.config.RTSP_VIDEO1 === "on")) {
632640
if(this.config.RTSP_OVER_HTTP !== this.oldConfig.RTSP_OVER_HTTP) {
633641
execCmds.push('rtspserver restart');
634-
} else {
642+
} else if((this.config.RTSP_VIDEO0 !== this.oldConfig.RTSP_VIDEO0) ||
643+
(this.config.RTSP_VIDEO1 !== this.oldConfig.RTSP_VIDEO1) ||
644+
(this.config.RTSP_AUDIO0 !== this.oldConfig.RTSP_AUDIO0) ||
645+
(this.config.RTSP_AUDIO1 !== this.oldConfig.RTSP_AUDIO1)) {
635646
execCmds.push('rtspserver on');
636647
}
637648
}

0 commit comments

Comments
 (0)