fix: resolve 'auto' encoder to detected hardware and add VAAPI drivers to Dockerfile

This commit is contained in:
Trevor Mears
2026-01-17 17:54:50 -08:00
parent 81d5f6e61e
commit d85ed753ab
2 changed files with 17 additions and 2 deletions
+8 -1
View File
@@ -2,7 +2,14 @@ FROM node:20-alpine
# Install build dependencies for better-sqlite3 and FFmpeg for streaming
# Using system FFmpeg instead of ffmpeg-static for better Docker DNS compatibility
RUN apk add --no-cache python3 make g++ ffmpeg
# Hardware acceleration packages:
# - mesa-va-gallium: AMD VAAPI (Radeon/Vega)
# - intel-media-driver: Intel VAAPI/QSV (newer Intel GPUs)
# - libva-intel-driver: Intel VAAPI (older Intel GPUs, Haswell-Skylake)
# - libva-utils: vainfo tool for debugging
# Note: NVIDIA requires nvidia-container-toolkit on host + --gpus flag
RUN apk add --no-cache python3 make g++ ffmpeg \
mesa-va-gallium intel-media-driver libva-intel-driver libva-utils
WORKDIR /app
+9 -1
View File
@@ -17,6 +17,7 @@ const path = require('path');
const fs = require('fs').promises;
const crypto = require('crypto');
const EventEmitter = require('events');
const hwDetect = require('./hwDetect');
// Session storage
const sessions = new Map();
@@ -166,9 +167,16 @@ class TranscodeSession extends EventEmitter {
*/
buildFFmpegArgs() {
const segmentPattern = path.join(this.dir, 'seg%04d.m4s');
const encoder = this.options.hwEncoder || 'software';
const videoMode = this.options.videoMode || 'encode';
// Resolve 'auto' encoder to detected hardware, fallback to software
let encoder = this.options.hwEncoder || 'software';
if (encoder === 'auto') {
const hwCaps = hwDetect.getCapabilities();
encoder = hwCaps?.recommended || 'software';
console.log(`[TranscodeSession ${this.id}] Auto encoder resolved to: ${encoder}`);
}
const args = [
'-hide_banner',
'-loglevel', 'warning',