mirror of
https://github.com/nextcloud/all-in-one.git
synced 2026-05-21 02:40:09 +00:00
Agent-Logs-Url: https://github.com/nextcloud/all-in-one/sessions/1b34e6db-7e7c-426e-addf-cce3ef7c5944 Co-authored-by: szaimen <42591237+szaimen@users.noreply.github.com>
105 lines
2.8 KiB
Bash
105 lines
2.8 KiB
Bash
#!/bin/bash
|
|
|
|
if [ "$AIO_LOG_LEVEL" = 'debug' ]; then
|
|
set -x
|
|
fi
|
|
|
|
# Defensive default: ensure AIO_LOG_LEVEL is never empty so log-level mappings below always resolve correctly
|
|
AIO_LOG_LEVEL="${AIO_LOG_LEVEL:-warn}"
|
|
|
|
TALK_RECORDING_LOG_LEVEL="$(case "$AIO_LOG_LEVEL" in
|
|
debug) printf '10' ;;
|
|
info) printf '20' ;;
|
|
warn) printf '30' ;;
|
|
error) printf '40' ;;
|
|
*) printf '30' ;;
|
|
esac)"
|
|
export TALK_RECORDING_LOG_LEVEL
|
|
|
|
# Variables
|
|
if [ -z "$NC_DOMAIN" ]; then
|
|
echo "You need to provide the NC_DOMAIN."
|
|
exit 1
|
|
elif [ -z "$RECORDING_SECRET" ]; then
|
|
echo "You need to provide the RECORDING_SECRET."
|
|
exit 1
|
|
elif [ -z "$INTERNAL_SECRET" ]; then
|
|
echo "You need to provide the INTERNAL_SECRET."
|
|
exit 1
|
|
fi
|
|
|
|
if [ -z "$HPB_DOMAIN" ]; then
|
|
export HPB_DOMAIN="$NC_DOMAIN"
|
|
fi
|
|
|
|
# Delete all contents on startup to start fresh
|
|
rm -fr /tmp/{*,.*}
|
|
|
|
# Detect available hardware for transcoding and build the [ffmpeg] config section accordingly
|
|
FFMPEG_SECTION="[ffmpeg]
|
|
# common = ffmpeg -loglevel level+warning -n
|
|
# outputaudio = -c:a libopus
|
|
# outputvideo = -c:v libvpx -deadline:v realtime -crf 10 -b:v 1M
|
|
extensionaudio = .ogg
|
|
extensionvideo = .webm"
|
|
|
|
# Check for NVIDIA GPU hardware encoding (NVENC)
|
|
if [ -e "/dev/nvidia0" ] && ffmpeg -hide_banner -encoders 2>/dev/null | grep -q "h264_nvenc"; then
|
|
echo "NVIDIA GPU detected, enabling h264_nvenc hardware transcoding"
|
|
FFMPEG_SECTION="[ffmpeg]
|
|
outputvideo = -c:v h264_nvenc -preset p4
|
|
outputaudio = -c:a aac
|
|
extensionaudio = .m4a
|
|
extensionvideo = .mp4"
|
|
# Check for VA-API render node (Intel/AMD open source drivers)
|
|
elif [ -r "/dev/dri/renderD128" ] && ffmpeg -hide_banner -encoders 2>/dev/null | grep -q "h264_vaapi"; then
|
|
echo "DRI device detected, enabling h264_vaapi hardware transcoding"
|
|
FFMPEG_SECTION="[ffmpeg]
|
|
common = ffmpeg -loglevel level+warning -n -vaapi_device /dev/dri/renderD128
|
|
outputvideo = -vf format=nv12,hwupload -c:v h264_vaapi
|
|
outputaudio = -c:a aac
|
|
extensionaudio = .m4a
|
|
extensionvideo = .mp4"
|
|
fi
|
|
|
|
cat << RECORDING_CONF > "/conf/recording.conf"
|
|
[logs]
|
|
# 30 means Warning
|
|
level = ${TALK_RECORDING_LOG_LEVEL}
|
|
|
|
[http]
|
|
listen = 0.0.0.0:1234
|
|
|
|
[backend]
|
|
allowall = ${ALLOW_ALL}
|
|
# The secret below is still needed if allowall is set to true, also it doesn't hurt to be here
|
|
secret = ${RECORDING_SECRET}
|
|
backends = backend-1
|
|
skipverify = ${SKIP_VERIFY}
|
|
maxmessagesize = 1024
|
|
videowidth = 1920
|
|
videoheight = 1080
|
|
directory = /tmp
|
|
|
|
[backend-1]
|
|
url = ${NC_PROTOCOL}://${NC_DOMAIN}
|
|
secret = ${RECORDING_SECRET}
|
|
skipverify = ${SKIP_VERIFY}
|
|
|
|
[signaling]
|
|
signalings = signaling-1
|
|
|
|
[signaling-1]
|
|
url = ${HPB_PROTOCOL}://${HPB_DOMAIN}${HPB_PATH}
|
|
internalsecret = ${INTERNAL_SECRET}
|
|
|
|
${FFMPEG_SECTION}
|
|
|
|
[recording]
|
|
browser = firefox
|
|
driverPath = /usr/bin/geckodriver
|
|
browserPath = /usr/bin/firefox
|
|
RECORDING_CONF
|
|
|
|
exec "$@"
|