No description
  • Go 94.9%
  • Makefile 4.1%
  • Dockerfile 1%
Find a file
zemdregon dd2522992f
Some checks are pending
CI / lint (push) Waiting to run
CI / test (push) Waiting to run
CI / build (push) Waiting to run
CI / docker (push) Blocked by required conditions
chore: fold remaining local workspace changes
2026-08-17 09:35:22 -05:00
.github/workflows chore(deps): bump docker/setup-buildx-action to v4 2026-08-10 18:15:36 -05:00
cmd/module chore: add CI and refresh docs/deploy 2026-07-22 19:09:48 -05:00
deploy chore: add CI and refresh docs/deploy 2026-07-22 19:09:48 -05:00
internal chore: fold remaining local workspace changes 2026-08-17 09:35:22 -05:00
proto/ffprobev1 Initial commit: media-ffprobe module 2026-06-15 20:08:06 -05:00
.dockerignore Initial commit: media-ffprobe module 2026-06-15 20:08:06 -05:00
.env.example Initial commit: media-ffprobe module 2026-06-15 20:08:06 -05:00
.gitignore chore: add CI and refresh docs/deploy 2026-07-22 19:09:48 -05:00
.golangci.yml Expand parse/cache tests and drop bare metadata capability. 2026-08-09 21:58:25 -05:00
CHANGELOG.md Advertise settings capability (v0.1.8). 2026-08-10 04:47:56 -05:00
COMPATIBILITY.md Initial commit: media-ffprobe module 2026-06-15 20:08:06 -05:00
CONTRIBUTING.md chore: add CI and refresh docs/deploy 2026-07-22 19:09:48 -05:00
Dockerfile Initial commit: media-ffprobe module 2026-06-15 20:08:06 -05:00
go.mod Expose ffprobe binary and timeout via RegisterSettings. (#10) 2026-08-10 02:03:53 -05:00
go.sum Expose ffprobe binary and timeout via RegisterSettings. (#10) 2026-08-10 02:03:53 -05:00
LICENSE Initial commit: media-ffprobe module 2026-06-15 20:08:06 -05:00
Makefile Initial commit: media-ffprobe module 2026-06-15 20:08:06 -05:00
muxcore.json Advertise settings capability (v0.1.8). 2026-08-10 04:47:56 -05:00
README.md chore: add CI and refresh docs/deploy 2026-07-22 19:09:48 -05:00
SECURITY.md chore: add CI and refresh docs/deploy 2026-07-22 19:09:48 -05:00

Media FFprobe

CI Go Version License: GPL-3.0

Media file analysis via ffprobe — detects codec, resolution, HDR, bitrate, and classifies quality.

A MuxCore sidecar module that wraps ffprobe to provide structured media analysis for quality scoring, transcoding decisions, and library metadata.


How It Works

Media file ──→ media-ffprobe (ffprobe) ──→ Structured analysis
                    │
                    ├── Codec, resolution, frame rate
                    ├── HDR type (HDR10, DV, HLG)
                    ├── Audio tracks (codec, channels, language)
                    ├── Subtitle tracks
                    └── Quality score (2160p Remux HDR = 170)

Key Features

  • HDR detection — identifies HDR10, HDR10+, Dolby Vision, and HLG from color metadata
  • Quality classification — assigns scores based on resolution (2160p > 1080p > 720p), source (Remux > BluRay > WEB-DL), and HDR
  • Multi-stream parsing — primary video stream plus all audio and subtitle tracks
  • SQLite cache — avoids re-analysis of unchanged files; invalidates on size/mtime change
  • gRPC APIAnalyze, GetCached (muxcore.ffprobe.v1.AnalysisService)

Configuration

Variable Default Description
FFPROBE_DB_PATH /var/lib/media-ffprobe/cache.db SQLite analysis cache path
FFPROBE_GRPC_ADDR :9480 Module analysis gRPC listen address
MUXCORE_MODULE_ID media-ffprobe Module ID registered with core
MUXCORE_GRPC_ADDR (SDK default) Core mesh gRPC address
MUXCORE_INSECURE_DISABLE_TLS false Disable TLS for local/dev

Quick Start

# Build
make build

# Run
export MUXCORE_INSECURE_DISABLE_TLS=true
./media-ffprobe --muxcore-mesh-addr localhost:9090

# Analyze a file
grpcurl -d '{"file_path": "/path/to/movie.mkv"}' \
  :9480 muxcore.ffprobe.v1.AnalysisService/Analyze

License

GPL-3.0