Hardware-Transkodierung auf dem QNAP-NAS – so geht’s

Basic Tutorials

Gehört zum Inventar
In Zeiten immer beliebter werdender Streamingdienste wie Netflix oder Amazon Prime Video gerät die eigene Film- und Seriensammlung häufig ein wenig in den Hintergrund. Trotzdem schlummern zahlreiche Mediendateien auf ebenso zahlreichen NAS – und das auch mit gutem Grund: Nicht alle Filme und Serien stehen online zur Verfügung. Als Besitzer eines QNAP NAS kommst du … (Weiterlesen...)
 
Ein toller Artikel, leider für mich ohne Funktion

Gibt es hier schon eine Anpassung an QuTS? Mit dem aktuellen Script klappt das leider nicht mehr.
 
Schade. Die Scriptpfade habe ich bereits angepasst. Leider findet er den Treiber nicht.

Im Ordner ist allerdings, die gesuchte Datei, wenn ich das richtig sehe.

Er sucht ja diese Datei "libnvcuvid.so.515.48.07". Die ist allerdings vorhanden in dem Ordner:
/share/ZFS530_DATA/.qpkg/NVIDIA_GPU_DRV/usr/lib



lrwxrwxrwx 1 admin 1000 15 2023-09-20 19:14 libnvcuvid.so -> libnvcuvid.so.1*
lrwxrwxrwx 1 admin 1000 23 2023-09-20 19:14 libnvcuvid.so.1 -> libnvcuvid.so.515.48.07*

Gibts irgendwie eine Möglichkeit das zum laufen zu bekommen?

Danke und viele Grüße



ERROR: cannot detect driver directory

Scriptanpassung:
#!/bin/bash
# halt on any error for safety and proper pipe handling
set -euo pipefail ; # <- this semicolon and comment make options apply
# even when script is corrupt by CRLF line terminators (issue #75)
# empty line must follow this comment for immediate fail with CRLF newlines

backup_path="/share/ZFS530_DATA/.qpkg/NVIDIA_GPU_DRV/usr/nvidia/libnvidia-encode-backup"
silent_flag=''

print_usage() { printf '
SYNOPSIS
patch.sh [-s] [-r|-h|-c VERSION|-l]

DESCRIPTION
The patch for Nvidia drivers to remove NVENC session limit

-s Silent mode (No output)
-r Rollback to original (Restore lib from backup)
-h Print this help message
-c VERSION Check if version VERSION supported by this patch.
Returns true exit code (0) if version is supported.
-l List supported driver versions

'
}

# shellcheck disable=SC2209
opmode="patch"

while getopts 'rshc:l' flag; do
case "${flag}" in
r) opmode="${opmode}rollback" ;;
s) silent_flag='true' ;;
h) opmode="${opmode}help" ;;
c) opmode="${opmode}checkversion" ; checked_version="$OPTARG" ;;
l) opmode="${opmode}listversions" ;;
*) echo "Incorrect option specified in command line" ; exit 2 ;;
esac
done

if [[ $silent_flag ]]; then
exec 1> /dev/null
fi

patch='s/\x00\x00\x00\x84\xc0\x0f\x84\x40\xfd\xff\xff/\x00\x00\x00\x84\xc0\x90\x90\x90\x90\x90\x90/g'

object='libnvcuvid.so'

check_version_supported () {
local ver="$1"
[[ 1 ]]
}

get_supported_versions () {
return 0
}

patch_common () {
NVIDIA_SMI="$(command -v /share/ZFS530_DATA/.qpkg/NVIDIA_GPU_DRV/usr/bin/nvidia-smi || true)"
if [[ ! "$NVIDIA_SMI" ]] ; then
echo 'nvidia-smi utility not found. Probably driver is not installed.'
exit 1
fi

ret_code=$?
driver_version="460.39"
if [[ $ret_code -ne 0 ]] ; then
echo "Can not detect nvidia driver version."
echo "CMD: \"$cmd\""
echo "Result: \"$driver_versions_list\""
echo "nvidia-smi retcode: $ret_code"
exit 1
fi

echo "Detected nvidia driver version: $driver_version"

if ! check_version_supported "$driver_version" ; then
echo "Patch for this ($driver_version) nvidia driver not found."
echo "Patch is available for versions: "
get_supported_versions
exit 1
fi

patch='s/\x00\x00\x00\x84\xc0\x0f\x84\x40\xfd\xff\xff/\x00\x00\x00\x84\xc0\x90\x90\x90\x90\x90\x90/g'

object='libnvcuvid.so'

declare -a driver_locations=(
'/share/ZFS530_DATA/.qpkg/NVIDIA_GPU_DRV/usr/lib'
'/share/ZFS530_DATA/.qpkg/NVIDIA_GPU_DRV/usr/nvidia'
'/share/ZFS530_DATA/.qpkg/NVIDIA_GPU_DRV/usr/nvidia.u18.04'
"/share/ZFS530_DATA/.qpkg/NVIDIA_GPU_DRV/usr/lib/nvidia-${driver_version%%.*}"
)

dir_found=''
for driver_dir in "${driver_locations[@]}" ; do
if [[ -e "$driver_dir/$object.$driver_version" ]]; then
dir_found='true'
break
fi
done

[[ "$dir_found" ]] || { echo "ERROR: cannot detect driver directory"; exit 1; }

}

rollback () {
patch_common
if [[ -f "$backup_path/$object.$driver_version" ]]; then
cp -p "$backup_path/$object.$driver_version" \
"$driver_dir/$object.$driver_version"
echo "Restore from backup $object.$driver_version"
else
echo "Backup not found. Try to patch first."
exit 1
fi
}

patch () {
patch_common
if [[ -f "$backup_path/$object.$driver_version" ]]; then
bkp_hash="$(sha1sum "$backup_path/$object.$driver_version" | cut -f1 -d\ )"
drv_hash="$(sha1sum "$driver_dir/$object.$driver_version" | cut -f1 -d\ )"
if [[ "$bkp_hash" != "$drv_hash" ]] ; then
echo "Backup exists and driver file differ from backup. Skipping patch."
return 0
fi
else
echo "Attention! Backup not found. Copying current $object to backup."
mkdir -p "$backup_path"
cp -p "$driver_dir/$object.$driver_version" \
"$backup_path/$object.$driver_version"
fi
sha1sum "$backup_path/$object.$driver_version"
sed "$patch" "$backup_path/$object.$driver_version" > \
"${PATCH_OUTPUT_DIR-$driver_dir}/$object.$driver_version"
sha1sum "${PATCH_OUTPUT_DIR-$driver_dir}/$object.$driver_version"
ldconfig
echo "Patched!"
}

query_version_support () {
if check_version_supported "$checked_version" ; then
echo "SUPPORTED"
exit 0
else
echo "NOT SUPPORTED"
exit 1
fi
}

list_supported_versions () {
get_supported_versions
}

case "${opmode}" in

patch) patch ;;
patchrollback) rollback ;;
patchhelp) print_usage ; exit 2 ;;
patchcheckversion) query_version_support ;;
patchlistversions) list_supported_versions ;;
*) echo "Incorrect combination of flags. Use option -h to get help."
exit 2 ;;
esac
 
Zurück
Oben