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

@@ -666,13 +666,13 @@ export interface AssetStatsResponseDto {
* @type {number}
* @memberof AssetStatsResponseDto
*/
'total': number;
'videos': number;
/**
*
* @type {number}
* @memberof AssetStatsResponseDto
*/
'videos': number;
'total': number;
}
/**
*
@@ -2510,6 +2510,12 @@ export interface SystemConfigDto {
* @interface SystemConfigFFmpegDto
*/
export interface SystemConfigFFmpegDto {
/**
*
* @type {TranscodeHWAccel}
* @memberof SystemConfigFFmpegDto
*/
'accel': TranscodeHWAccel;
/**
*
* @type {number}
@@ -2858,6 +2864,22 @@ export const TimeGroupEnum = {
export type TimeGroupEnum = typeof TimeGroupEnum[keyof typeof TimeGroupEnum];
/**
*
* @export
* @enum {string}
*/
export const TranscodeHWAccel = {
Nvenc: 'nvenc',
Qsv: 'qsv',
Vaapi: 'vaapi',
Disabled: 'disabled'
} as const;
export type TranscodeHWAccel = typeof TranscodeHWAccel[keyof typeof TranscodeHWAccel];
/**
*
* @export