New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

eprec

Package Overview
Dependencies
Maintainers
1
Versions
21
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

eprec

eprec

latest
Source
npmnpm
Version
1.15.1
Version published
Maintainers
1
Created
Source

eprec

Tools for processing Epic Web course recordings

Build Status version downloads MIT License

Overview

A Bun-based CLI that processes recorded course videos by splitting chapter markers into separate files, trimming silence at the start/end, and optionally removing spoken "Jarvis" command windows via transcript timestamps refined with audio-based silence detection.

Requirements

  • Bun - runtime and package manager
  • ffmpeg + ffprobe - must be available on PATH
  • whisper-cli (optional) - from whisper.cpp, required for transcription
    • Pass --whisper-binary-path if not on PATH
    • Model file auto-downloads to .cache/whispercpp/ggml-small.en.bin
  • Silero VAD model - auto-downloads to .cache/silero-vad.onnx on first use

Installation

bun install

Quick Start

bun src/process-course-video.ts "/path/to/input.mp4" "/path/to/output" \
  --enable-transcription \
  --keep-intermediates \
  --write-logs

Web UI (experimental)

Start the Remix-powered UI shell (watch mode enabled):

bun run app:start

To preload a local video path for the UI:

bun run app:start -- --video-path "/path/to/video.mp4"

Then open http://localhost:3000. Use -- --port, -- --host, or -- --video-path to override the defaults.

CLI Options

OptionAliasDescriptionDefault
inputInput video file (mp4/mkv)required
outputDirOutput directoryoutput
--min-chapter-seconds-mSkip chapters shorter than this15
--dry-run-dDon't write files or run ffmpegfalse
--keep-intermediates-kKeep .tmp files for debuggingfalse
--write-logs-lWrite log files for skips/fallbacksfalse
--enable-transcriptionRun whisper.cpp for command detectionfalse
--whisper-model-pathPath to whisper.cpp model fileauto-cached
--whisper-languageLanguage for whisperen
--whisper-binary-pathPath to whisper-cli binarysystem PATH
--chapter-cFilter to specific chapters (see below)all

Chapter Selection

The --chapter flag supports flexible selection:

  • Single: --chapter 4
  • Range: --chapter 4-6
  • Open range: --chapter 4-* (chapter 4 to end)
  • Multiple: --chapter 4,6,9-12

Chapter numbers are 1-based by default.

Output Structure

Final files are written to the output directory with names like:

chapter-01-intro.mp4
chapter-02-getting-started.mp4
chapter-03-custom-title.mp4

When --keep-intermediates is enabled, intermediate files go to output/.tmp/:

File PatternDescription
*-raw.mp4Raw chapter clip with initial padding removed
*-normalized.mp4Audio normalized (highpass + denoise + loudnorm)
*-transcribe.wavAudio extracted for whisper
*-transcribe.jsonWhisper JSON output
*-transcribe.txtWhisper text output
*-splice-*.mp4Segments before/after command windows
*-spliced.mp4Concatenated output after command removal
*.logPer-chapter skip/fallback logs
process-summary.logOverall processing summary

Voice Commands

Commands are spoken in the format: jarvis <command> ... thanks

CommandEffect
jarvis bad take thanksSkip the entire chapter
jarvis filename my-custom-name thanksRename output file

The command window (from "jarvis" to "thanks") is removed from the final video.

More Details

Implementation notes and pipeline details live in docs/README.md.

This project was created using bun init in bun v1.3.1. Bun is a fast all-in-one JavaScript runtime.

FAQs

Package last updated on 29 Jan 2026

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts