Fix multi-res HLS encoding on CPU: fall back to libx264 when NVENC unavailable
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 3m8s
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 3m8s
The hardcoded h264_nvenc encoder fails on CPU-only workers. Now uses check_nvenc_available() to auto-detect and falls back to libx264. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -21,6 +21,8 @@ from dataclasses import dataclass, field
|
||||
|
||||
import numpy as np
|
||||
|
||||
from streaming.output import check_nvenc_available
|
||||
|
||||
# Try GPU imports
|
||||
try:
|
||||
import cupy as cp
|
||||
@@ -222,14 +224,26 @@ class MultiResolutionHLSOutput:
|
||||
"-vf", f"scale={quality.width}:{quality.height}:flags=lanczos",
|
||||
])
|
||||
|
||||
# NVENC encoding with quality settings
|
||||
# Encoding settings - use NVENC if available, fall back to libx264
|
||||
use_nvenc = check_nvenc_available()
|
||||
if use_nvenc:
|
||||
cmd.extend([
|
||||
"-c:v", "h264_nvenc",
|
||||
"-preset", "p4", # Balanced speed/quality
|
||||
"-tune", "hq",
|
||||
"-b:v", f"{quality.bitrate}k",
|
||||
"-maxrate", f"{int(quality.bitrate * 1.5)}k",
|
||||
"-bufsize", f"{quality.bitrate * 2}k",
|
||||
])
|
||||
else:
|
||||
cmd.extend([
|
||||
"-c:v", "libx264",
|
||||
"-preset", "fast",
|
||||
"-b:v", f"{quality.bitrate}k",
|
||||
"-maxrate", f"{int(quality.bitrate * 1.5)}k",
|
||||
"-bufsize", f"{quality.bitrate * 2}k",
|
||||
])
|
||||
cmd.extend([
|
||||
"-c:v", "h264_nvenc",
|
||||
"-preset", "p4", # Balanced speed/quality
|
||||
"-tune", "hq",
|
||||
"-b:v", f"{quality.bitrate}k",
|
||||
"-maxrate", f"{int(quality.bitrate * 1.5)}k",
|
||||
"-bufsize", f"{quality.bitrate * 2}k",
|
||||
"-g", str(int(self.fps * self.segment_duration)), # Keyframe interval = segment duration
|
||||
"-keyint_min", str(int(self.fps * self.segment_duration)),
|
||||
"-sc_threshold", "0", # Disable scene change detection for consistent segments
|
||||
|
||||
Reference in New Issue
Block a user