mirror of
https://github.com/nextcloud/all-in-one.git
synced 2026-06-01 16:30:09 +00:00
Merge pull request #7928 from nextcloud/copilot/add-hardware-transcoding-talk-recording
talk-recording: allow to enable hardware transcoding for the container
This commit is contained in:
@@ -312,6 +312,26 @@ if [ -n "$AIO_COMMUNITY_CONTAINERS" ]; then
|
||||
print_red "You've set AIO_COMMUNITY_CONTAINERS but the option was removed.
|
||||
The community containers get managed via the AIO interface now."
|
||||
fi
|
||||
if [ -n "$NEXTCLOUD_ENABLE_DRI_DEVICE" ]; then
|
||||
print_red "The environmental variable NEXTCLOUD_ENABLE_DRI_DEVICE is deprecated. Please mount the /dev/dri device into the mastercontainer instead and remove NEXTCLOUD_ENABLE_DRI_DEVICE. It will then be set automatically."
|
||||
fi
|
||||
|
||||
# Automatically enable the /dev/dri device if it is mounted into the mastercontainer
|
||||
if [ -d "/dev/dri" ]; then
|
||||
export NEXTCLOUD_ENABLE_DRI_DEVICE="true"
|
||||
if [ -e "/dev/dri/renderD128" ]; then
|
||||
NEXTCLOUD_DRI_GID="$(stat -c '%g' /dev/dri/renderD128)"
|
||||
export NEXTCLOUD_DRI_GID
|
||||
else
|
||||
export NEXTCLOUD_DRI_GID=""
|
||||
fi
|
||||
else
|
||||
if [ -z "$NEXTCLOUD_ENABLE_DRI_DEVICE" ]; then
|
||||
# Force the unset of the env if it was not externally overwritten already
|
||||
export NEXTCLOUD_ENABLE_DRI_DEVICE="false"
|
||||
fi
|
||||
export NEXTCLOUD_DRI_GID=""
|
||||
fi
|
||||
|
||||
# Check if ghcr.io is reachable
|
||||
# Solves issues like https://github.com/nextcloud/all-in-one/discussions/5268
|
||||
|
||||
@@ -19,6 +19,7 @@ RUN set -ex; \
|
||||
bash \
|
||||
xvfb \
|
||||
ffmpeg \
|
||||
mesa-va-gallium \
|
||||
firefox \
|
||||
font-noto-all \
|
||||
font-noto-cjk \
|
||||
|
||||
@@ -19,6 +19,33 @@ 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
|
||||
@@ -50,12 +77,7 @@ signalings = signaling-1
|
||||
url = ${HPB_PROTOCOL}://${HPB_DOMAIN}${HPB_PATH}
|
||||
internalsecret = ${INTERNAL_SECRET}
|
||||
|
||||
[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
|
||||
${FFMPEG_SECTION}
|
||||
|
||||
[recording]
|
||||
browser = firefox
|
||||
|
||||
Reference in New Issue
Block a user