feat: compress MP4 videos at Docker build time via FFmpeg
Hugo has no video processing, so FFmpeg runs in the builder stage
before hugo builds, compressing every content/**/*.mp4 in-place.
scripts/compress-videos.sh:
- H.264 CRF 28 + preset slow (good web compression)
- faststart for progressive streaming
- AAC 64k audio
- Only replaces source if output is actually smaller, so
already-lean videos are skipped
Dockerfile:
- apk adds ffmpeg alongside hugo in the builder stage
- RUN compress-videos.sh runs after COPY . . before pnpm build
(compressed files land in public/ via Hugo's copy of page bundles)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
+5
-2
@@ -1,8 +1,8 @@
|
||||
# Stage 1: Build
|
||||
FROM node:22-alpine AS builder
|
||||
|
||||
# Install Hugo
|
||||
RUN apk add --no-cache hugo
|
||||
# Install Hugo + FFmpeg (video compression)
|
||||
RUN apk add --no-cache hugo ffmpeg
|
||||
|
||||
# Install pnpm
|
||||
RUN corepack enable && corepack prepare pnpm@latest --activate
|
||||
@@ -16,6 +16,9 @@ RUN pnpm install --frozen-lockfile
|
||||
# Copy source files
|
||||
COPY . .
|
||||
|
||||
# Compress MP4 videos in-place before Hugo builds
|
||||
RUN sh scripts/compress-videos.sh content
|
||||
|
||||
# Build CSS and Hugo site
|
||||
RUN pnpm build
|
||||
|
||||
|
||||
Reference in New Issue
Block a user