Skip to content

ChanningHe/ffforge

Repository files navigation

FFForge

!! This project is under active development. Breaking changes may occur. !!

A modern web application for video transcoding with H.265/AV1 encoding support.

License: GPL v3 Docker

Features

  • Web-based file browser
  • Batch processing with real-time progress
  • Hardware acceleration (NVIDIA, Intel QSV)
  • Customize any FFmpeg command arguments
  • Preset management
  • Task queue system
  • Desktop application (macOS/Windows)

Roadmap

  • File permission management
  • NVIDIA GPU Transcoder confirm
  • Intel QSV Transcoder confirm
  • Intel QSV / NVIDIA Preset
  • Homepage refact
  • Desktop application support
  • macOS GPU support
  • AMD GPU support
  • Remote agent transcoding

Quick Start

Docker (Recommended)

services:
  ffforge:
    container_name: ffforge
    image: ghcr.io/channinghe/ffforge:latest
    restart: unless-stopped
    ports:
      - "38110:8080"
    volumes:
      - /your/media/path:/data
      # Mount output directory
      - ./ffforge/output:/output
      # Mount config directory
      - ./ffforge/config:/app/config
    environment:
      - PORT=8080
      # Paths
      - DATA_PATH=/data
      - OUTPUT_PATH=/output
      - CONFIG_PATH=/app/config
      - DATABASE_PATH=/app/config/database/ffforge.db
      - CORS_ORIGINS=http://localhost:3000
    # ============ intel gpu configuration ============
    # if you want to use Intel GPU, uncomment the following:
    # devices:
    #   - /dev/dri/renderD128:/dev/dri/renderD128
    
    # ============ nvidia gpu configuration ============
    # if you want to use NVIDIA GPU, uncomment the following:
    # runtime: nvidia
    # deploy:
    #   resources:
    #     reservations:
    #       devices:
    #         - driver: nvidia
    #           count: all
    #           capabilities: [gpu]
networks:
  ffweb-network:
    driver: bridge
docker-compose up -d
# Access the web interface
open http://localhost:38110

Local Development

# Backend
cd backend
go run cmd/server/main.go

# Frontend
cd frontend
npm install
VITE_USE_MOCK=true npm run dev

Configuration

Mount your video files to /data and set output directory to /output:

volumes:
  - ./data:/data
  - ./output:/output

ScreenShoot

Hardware Acceleration

Intel QSV

  • ✅ Tested on Linux with Intel Arc Pro B50 (AV1,H265)
  • ✅ Tested on Windows with Intel UHD 770 (H265)

Works out of the box with the standard Docker image.

NVIDIA

  • ✅ Tested on Linux with Nvidia P400 (H265)
  • ✅ Tested on Windows with Nvidia RTX3070 (H265)

Works out of the box with the standard Docker image.

AMD

⚠️ Not tested yet

Tech Stack

  • Backend: Go 1.22, Gin, SQLite
  • Frontend: React 18, TypeScript, TailwindCSS
  • Desktop: Wails v2 (macOS/Windows builds available, more testing needed)
  • FFmpeg: Powered by jellyfin-ffmpeg with comprehensive GPU transcoding support

Special thanks to jellyfin-ffmpeg for providing comprehensive FFmpeg builds with GPU transcoding support.

License

GNU General Public License v3.0 - see LICENSE file for details.

This project uses FFmpeg, which is licensed under GPL v2 or later.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages