You've already forked immich
mirror of
https://github.com/immich-app/immich.git
synced 2025-08-07 23:03:36 +02:00
feat(server): transcoding hardware acceleration (#3171)
* added transcode configs for nvenc,qsv and vaapi * updated dev docker compose * added software fallback * working vaapi * minor fixes and added tests * updated api * compile libvips * move hwaccel settings to `hwaccel.yml` * changed default dockerfile, moved `readdir` call * removed unused import * minor cleanup * fix for arm build * added documentation, minor fixes * added intel driver * updated docs styling * uppercase codec and api names * formatting * added tests * updated docs * removed semicolons * added link to `hwaccel.yml` * added newlines * added `hwaccel` section to docker-compose.prod.yml * ensure mesa drivers are installed * switch to mimalloc for sharp * moved build version and sha256 to json * let libmfx set the render device * possible fix for vp9 on qsv * updated tests * formatting * review suggestions * semicolon * moved `LD_PRELOAD` to start script * switched to jellyfin's ffmpeg package * fixed dockerfile * use cqp instead of icq for qsv vp9 * updated dockerfile * added sha256sum for other platforms * fixtures
This commit is contained in:
21
server/bin/build-imagemagick.sh
Executable file
21
server/bin/build-imagemagick.sh
Executable file
@ -0,0 +1,21 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
LOCK=$(jq -c '.packages[] | select(.name == "imagemagick")' build-lock.json)
|
||||
IMAGEMAGICK_VERSION=${IMAGEMAGICK_VERSION:=$(echo $LOCK | jq -r '.version')}
|
||||
IMAGEMAGICK_SHA256=${IMAGEMAGICK_SHA256:=$(echo $LOCK | jq -r '.sha256')}
|
||||
|
||||
echo "$IMAGEMAGICK_SHA256 $IMAGEMAGICK_VERSION.tar.gz" > imagemagick.sha256
|
||||
mkdir -p ImageMagick
|
||||
wget -nv https://github.com/ImageMagick/ImageMagick/archive/${IMAGEMAGICK_VERSION}.tar.gz
|
||||
sha256sum -c imagemagick.sha256
|
||||
tar -xvf ${IMAGEMAGICK_VERSION}.tar.gz -C ImageMagick --strip-components=1
|
||||
rm ${IMAGEMAGICK_VERSION}.tar.gz
|
||||
rm imagemagick.sha256
|
||||
cd ImageMagick
|
||||
./configure --with-modules
|
||||
make -j$(nproc)
|
||||
make install
|
||||
cd .. && rm -rf ImageMagick
|
||||
ldconfig /usr/local/lib
|
22
server/bin/build-libvips.sh
Executable file
22
server/bin/build-libvips.sh
Executable file
@ -0,0 +1,22 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
LOCK=$(jq -c '.packages[] | select(.name == "libvips")' build-lock.json)
|
||||
LIBVIPS_VERSION=${LIBVIPS_VERSION:=$(echo $LOCK | jq -r '.version')}
|
||||
LIBVIPS_SHA256=${LIBVIPS_SHA256:=$(echo $LOCK | jq -r '.sha256')}
|
||||
|
||||
echo "$LIBVIPS_SHA256 vips-$LIBVIPS_VERSION.tar.xz" > libvips.sha256
|
||||
mkdir -p libvips
|
||||
wget -nv https://github.com/libvips/libvips/releases/download/v${LIBVIPS_VERSION}/vips-${LIBVIPS_VERSION}.tar.xz
|
||||
sha256sum -c libvips.sha256
|
||||
tar -xvf vips-${LIBVIPS_VERSION}.tar.xz -C libvips --strip-components=1
|
||||
rm vips-${LIBVIPS_VERSION}.tar.xz
|
||||
rm libvips.sha256
|
||||
cd libvips
|
||||
meson setup build --buildtype=release --libdir=lib -Dintrospection=false
|
||||
cd build
|
||||
# ninja test # tests set concurrency too high for arm/v7
|
||||
ninja install
|
||||
cd .. && rm -rf libvips
|
||||
ldconfig /usr/local/lib
|
17
server/bin/install-ffmpeg.sh
Executable file
17
server/bin/install-ffmpeg.sh
Executable file
@ -0,0 +1,17 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
LOCK=$(jq -c '.packages[] | select(.name == "ffmpeg")' build-lock.json)
|
||||
export TARGETARCH=${TARGETARCH:=$(dpkg --print-architecture)}
|
||||
FFMPEG_VERSION=${FFMPEG_VERSION:=$(echo $LOCK | jq -r '.version')}
|
||||
FFMPEG_SHA256=${FFMPEG_SHA256:=$(echo $LOCK | jq -r '.sha256[$ENV.TARGETARCH]')}
|
||||
|
||||
echo "$FFMPEG_SHA256 jellyfin-ffmpeg6_${FFMPEG_VERSION}-bookworm_${TARGETARCH}.deb" > ffmpeg.sha256
|
||||
|
||||
wget -nv https://github.com/jellyfin/jellyfin-ffmpeg/releases/download/v${FFMPEG_VERSION}/jellyfin-ffmpeg6_${FFMPEG_VERSION}-bookworm_${TARGETARCH}.deb
|
||||
sha256sum -c ffmpeg.sha256
|
||||
apt-get -yqq -f install ./jellyfin-ffmpeg6_${FFMPEG_VERSION}-bookworm_${TARGETARCH}.deb
|
||||
rm jellyfin-ffmpeg6_${FFMPEG_VERSION}-bookworm_${TARGETARCH}.deb
|
||||
rm ffmpeg.sha256
|
||||
ldconfig /usr/lib/jellyfin-ffmpeg/lib
|
Reference in New Issue
Block a user