Skip to content

Releases: fdenis75/VideoHash

VideoHash v0.2.1

09 Mar 12:45

Choose a tag to compare

VideoHash v0.2.0

07 Mar 15:53

Choose a tag to compare

VideoHash v0.2.0

This release adds batch hashing support with controlled concurrency and volume-aware scheduling.

Highlights

  • Added batch API:
    • generateHashes(for:maxConcurrentTasks:)
  • Added volume-aware planning to spread concurrent work across different volumes when possible
  • Preserves input order in batch results
  • Updated the test-hash CLI to accept a folder path and process files concurrently
  • Added tests for batch planning behavior

New API

let generator = VideoHashGenerator()

let results = try await generator.generateHashes(
    for: urls,
    maxConcurrentTasks: 4
)

Behavior

  • Batch hashing runs multiple files concurrently
  • Scheduling tries to interleave files from different volumes to reduce disk contention
  • Returned results keep the same order as the input URL array
  • Single-file APIs remain available and unchanged

CLI

Folder mode is now supported:

swift run test-hash /path/to/folder 4
swift run test-hash /path/to/folder 4 /opt/bin/videohashes-amd64-macos

Validation

  • swift test passed
  • Batch planner tests added
  • Folder-mode CLI build and runtime validated

Installation

.package(url: "https://github.com/fdenis75/VideoHash.git", from: "0.2.0")

Initial release

23 Feb 21:29

Choose a tag to compare

VideoHash v0.1.0

Initial public release of VideoHash, a Swift package for generating video fingerprints on macOS.

Highlights

  • Added VideoHashGenerator API to generate both:
    • PHash (perceptual hash for near-duplicate detection)
    • OSHash (OpenSubtitles hash for exact file identity)
  • Added videohashes-compatible PHash mode (ffmpeg-based preprocessing) for parity with peolic/videohashes (https://github.com/peolic/videohashes)
  • Added unit tests for OSHash behavior and PHash median/hex formatting behavior
  • Added GitHub publication essentials:
    • CI workflow (build + test)
    • CONTRIBUTING.md
    • SECURITY.md
    • LICENSE (MIT)
    • CHANGELOG.md

Requirements

  • macOS 26.0+
  • Swift 6.2+
  • Xcode 17+
  • ffmpeg available on PATH (or set HashConfiguration.ffmpegPath)

Install (SwiftPM)

.package(url: "https://github.com/fdenis75/VideoHash.git", from: "0.1.0")

Notes

  • Default PHash path is compatibility-focused (useFFmpegFrameExtraction = true)
  • PHash output is lowercase hexadecimal (non-zero-padded)

Validation

  • swift build ✅
  • swift test ✅