Tidy
parent
b076269c5d
commit
844e83a0f0
|
|
@ -0,0 +1,18 @@
|
||||||
|
FROM frolvlad/alpine-glibc:alpine-3.9_glibc-2.29
|
||||||
|
|
||||||
|
RUN apk update \
|
||||||
|
&& apk add --no-cache \
|
||||||
|
ca-certificates \
|
||||||
|
ffmpeg \
|
||||||
|
bash
|
||||||
|
|
||||||
|
RUN mkdir -p /var/log
|
||||||
|
WORKDIR /main
|
||||||
|
|
||||||
|
COPY . .
|
||||||
|
|
||||||
|
ENV GOPATH=""
|
||||||
|
ENV MNT="/mnt/"
|
||||||
|
ENTRYPOINT ["bash", "/main/entrypoint.sh"]
|
||||||
|
CMD []
|
||||||
|
|
||||||
|
|
@ -1,41 +0,0 @@
|
||||||
#! /bin/bash
|
|
||||||
|
|
||||||
echo to start: ${@:-83}
|
|
||||||
|
|
||||||
for i in "${@:-83}"; do
|
|
||||||
echo starting $i...
|
|
||||||
ffmpeg \
|
|
||||||
-threads 0 \
|
|
||||||
-nostdin \
|
|
||||||
-nostats \
|
|
||||||
-loglevel error \
|
|
||||||
-i rtsp://192.168.0.$i:8554/unicast \
|
|
||||||
-an \
|
|
||||||
-map 0 \
|
|
||||||
-force_key_frames "expr:gte(t,n_forced*9)" \
|
|
||||||
-f segment \
|
|
||||||
-segment_time ${SEG:-10} \
|
|
||||||
-segment_format mp4 \
|
|
||||||
-strftime 1 \
|
|
||||||
-minrate .05k \
|
|
||||||
-vcodec copy \
|
|
||||||
"/tmp/ffmpeg_cap/ffmpeg_capture-$i-%Y%m%d_%H%M%S.mp4" \
|
|
||||||
-vf "select=gt(scene\,0.003),setpts=N/(15*TB)" \
|
|
||||||
2>&1 \
|
|
||||||
< /dev/null \
|
|
||||||
| grep -vE 'RTP: missed|max delay reached. need to consume packet|decode_slice_header|no.frame|non.existing.PPS|Last.message.repeated' \
|
|
||||||
>> ./ffmpegs.log &
|
|
||||||
done
|
|
||||||
|
|
||||||
clean() {
|
|
||||||
kill -9 $(jobs -p)
|
|
||||||
}
|
|
||||||
trap clean EXIT ERR
|
|
||||||
|
|
||||||
for i in "${@:-83}"; do
|
|
||||||
if ! wait -n 1; then
|
|
||||||
echo "Something died" >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
exit 0
|
|
||||||
done
|
|
||||||
|
|
@ -0,0 +1,60 @@
|
||||||
|
#! /bin/bash
|
||||||
|
|
||||||
|
function main() {
|
||||||
|
if [ "$#" -eq 0 ]; then
|
||||||
|
echo "USAGE: $0 ip ip ip..." >&2
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
function clean() {
|
||||||
|
kill -9 $(jobs -p)
|
||||||
|
}
|
||||||
|
trap clean EXIT ERR
|
||||||
|
for ip in "$@"; do
|
||||||
|
echo recording from $ip...
|
||||||
|
record "$ip" &
|
||||||
|
done
|
||||||
|
|
||||||
|
for i in "$@"; do
|
||||||
|
if ! wait -n 1; then
|
||||||
|
echo "Something died: $?" >&2
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
return 0
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
function record() {
|
||||||
|
while true; do
|
||||||
|
_record "$@"
|
||||||
|
sleep 10
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
function _record() {
|
||||||
|
ffmpeg \
|
||||||
|
-threads 0 \
|
||||||
|
-nostdin \
|
||||||
|
-nostats \
|
||||||
|
-loglevel error \
|
||||||
|
-i rtsp://192.168.0.$1:8554/unicast \
|
||||||
|
-an \
|
||||||
|
-map 0 \
|
||||||
|
-force_key_frames "expr:gte(t,n_forced*9)" \
|
||||||
|
-f segment \
|
||||||
|
-segment_time ${SEG:-300} \
|
||||||
|
-segment_format mp4 \
|
||||||
|
-strftime 1 \
|
||||||
|
-minrate .05k \
|
||||||
|
-vcodec copy \
|
||||||
|
"${OUT_DIR:-/tmp/ffmpeg_cap}/cap-$1-%Y%m%d_%H%M%S.mp4" \
|
||||||
|
-vf "select=gt(scene\,0.003),setpts=N/(15*TB)" \
|
||||||
|
< /dev/null \
|
||||||
|
>> /tmp/ffmpegs.log \
|
||||||
|
2>&1
|
||||||
|
}
|
||||||
|
|
||||||
|
if [ "$0" == "$BASH_SOURCE" ]; then
|
||||||
|
main "$@"
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
@ -0,0 +1,45 @@
|
||||||
|
#! /bin/bash
|
||||||
|
|
||||||
|
echo to start: ${@:-83}
|
||||||
|
|
||||||
|
for i in "${@:-83}"; do
|
||||||
|
echo starting $i...
|
||||||
|
(
|
||||||
|
while true; do
|
||||||
|
ffmpeg \
|
||||||
|
-threads 0 \
|
||||||
|
-nostdin \
|
||||||
|
-nostats \
|
||||||
|
-loglevel error \
|
||||||
|
-i rtsp://192.168.0.$i:8554/unicast \
|
||||||
|
-an \
|
||||||
|
-map 0 \
|
||||||
|
-force_key_frames "expr:gte(t,n_forced*9)" \
|
||||||
|
-f segment \
|
||||||
|
-segment_time ${SEG:-10} \
|
||||||
|
-segment_format mp4 \
|
||||||
|
-strftime 1 \
|
||||||
|
-minrate .05k \
|
||||||
|
-vcodec copy \
|
||||||
|
"/tmp/ffmpeg_cap/ffmpeg_capture-$i-%Y%m%d_%H%M%S.mp4" \
|
||||||
|
-vf "select=gt(scene\,0.003),setpts=N/(15*TB)" \
|
||||||
|
< /dev/null \
|
||||||
|
>> ./ffmpegs.log \
|
||||||
|
2>&1
|
||||||
|
sleep 30
|
||||||
|
done
|
||||||
|
) &
|
||||||
|
done
|
||||||
|
|
||||||
|
clean() {
|
||||||
|
kill -9 $(jobs -p)
|
||||||
|
}
|
||||||
|
trap clean EXIT ERR
|
||||||
|
|
||||||
|
for i in "${@:-83}"; do
|
||||||
|
if ! wait -n 1; then
|
||||||
|
echo "Something died" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
exit 0
|
||||||
|
done
|
||||||
Loading…
Reference in New Issue