#!/bin/bash # GPU Detection Diagnostic Script # Run this inside the Docker container to check GPU availability echo "========================================" echo "GPU Detection Diagnostic" echo "========================================" echo "" echo "1. Checking /dev/dri devices..." ls -lah /dev/dri/ 2>&1 || echo "ERROR: /dev/dri not found!" echo "" echo "2. Checking FFmpeg version..." ffmpeg -version | head -5 echo "" echo "3. Checking FFmpeg encoders..." ffmpeg -hide_banner -encoders 2>&1 | grep -i "qsv\|nvenc\|vaapi\|x265\|x264" echo "" echo "4. Checking for Intel QSV specifically..." if ffmpeg -hide_banner -encoders 2>&1 | grep -qi "hevc_qsv"; then echo "[OK] Intel QSV H.265 (hevc_qsv) is available" else echo "[FAIL] Intel QSV H.265 (hevc_qsv) NOT found" fi if ffmpeg -hide_banner -encoders 2>&1 | grep -qi "h264_qsv"; then echo "[OK] Intel QSV H.264 (h264_qsv) is available" else echo "[FAIL] Intel QSV H.264 (h264_qsv) NOT found" fi echo "" echo "5. Checking vainfo (Intel GPU information)..." vainfo 2>&1 | head -20 echo "" echo "6. Testing QSV encoding (if available)..." if ffmpeg -hide_banner -encoders 2>&1 | grep -qi "hevc_qsv"; then echo "Running test encode with QSV..." ffmpeg -f lavfi -i testsrc=duration=1:size=1280x720:rate=30 \ -c:v hevc_qsv -preset medium -global_quality 23 \ -f null - 2>&1 | tail -10 else echo "Skipping QSV test (encoder not available)" fi echo "" echo "7. Checking hardware acceleration..." ffmpeg -hide_banner -hwaccels 2>&1 echo "" echo "========================================" echo "Diagnostic Complete" echo "========================================"