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:
Mert
2023-08-01 21:56:10 -04:00
committed by GitHub
parent b9cda59172
commit ee49f470b7
44 changed files with 1308 additions and 68 deletions

View File

@@ -4973,14 +4973,15 @@
"type": "object"
},
"AssetStatsResponseDto": {
"type": "object",
"properties": {
"images": {
"type": "integer"
},
"total": {
"videos": {
"type": "integer"
},
"videos": {
"total": {
"type": "integer"
}
},
@@ -4988,8 +4989,7 @@
"images",
"videos",
"total"
],
"type": "object"
]
},
"AssetTypeEnum": {
"enum": [
@@ -6547,6 +6547,9 @@
},
"SystemConfigFFmpegDto": {
"properties": {
"accel": {
"$ref": "#/components/schemas/TranscodeHWAccel"
},
"crf": {
"type": "integer"
},
@@ -6581,6 +6584,7 @@
"targetVideoCodec",
"targetAudioCodec",
"transcode",
"accel",
"preset",
"targetResolution",
"maxBitrate",
@@ -6809,6 +6813,15 @@
],
"type": "string"
},
"TranscodeHWAccel": {
"enum": [
"nvenc",
"qsv",
"vaapi",
"disabled"
],
"type": "string"
},
"TranscodePolicy": {
"enum": [
"all",