Skip to main content

tape-video

SQLite para videos largos.

PyPI License

tape-video convierte un video largo en un índice temporal chico, local y consultable — y después te deja cortar y comprimir solo lo activo.

El paquete en PyPI/GitHub es tape-video; el comando en la terminal es tape.

video.mp4  →  video.mp4.tape  →  SQL / clips / digest.mp4

No es un editor. No es una API en la nube. Es una base de datos temporal embebida al lado de tu archivo.

Instalación

pip install tape-video
brew install ffmpeg   # requerido en el PATH
tape doctor

Desde el repo (desarrollo):

git clone https://github.com/EmanuelCorreaAR/tape-video.git
cd tape-video
python3 -m venv .venv
source .venv/bin/activate
pip install -e .
tape doctor

Uso rápido

Un solo comando:

tape digest lecture.mp4
# genera lecture_digest.mp4 (+ .txt + .json) junto al video

O con salida explícita:

tape digest lecture.mp4 --out digest.mp4

Eso indexa (si hace falta), detecta tramos activos y genera:

Archivo Qué es
lecture.mp4.tape Índice SQLite (línea de tiempo)
lecture_digest.mp4 Video solo con tramos activos
lecture_digest.mp4.txt Resumen legible (criterio + lista de tramos)
lecture_digest.mp4.json Misma info en JSON

En la terminal vas a ver una timeline:

Timeline: |██··████·█··███····█|
          █ activo   · quieto/silencio

Y un resumen tipo:

Digest listo
  1h 32m  →  18m  (20% del original)

Paso a paso

tape index lecture.mp4
tape info lecture.mp4
tape detect lecture.mp4
tape compress lecture.mp4 --out digest.mp4

# consultar el índice
tape sql lecture.mp4 "SELECT t0, t1, motion, audio_rms FROM timeline_bins WHERE motion > 0.3 LIMIT 20"

Ajustar sensibilidad:

tape digest video.mp4 --out digest.mp4 --motion 0.08 --audio 0.12

Comandos

Comando Qué hace
tape analyze VIDEO Estima el recorte sin generar video
tape doctor Chequea ffmpeg y el entorno
tape digest VIDEO --out digest.mp4 Todo en uno: indexar + comprimir
tape index VIDEO Arma VIDEO.tape (movimiento + audio)
tape info TARGET Duración, muestras, tramos y timeline
tape detect TARGET Marca tramos activity
tape segments TARGET Lista tramos guardados
tape clip TARGET --out clips/ Exporta cada tramo como .mp4
tape compress TARGET --out digest.mp4 Digest + .txt + .json
tape sql TARGET "SELECT …" SQL sobre el índice

TARGET puede ser el video o el archivo .tape.

Cómo decide qué es “activo”

Tape construye una línea de tiempo del video con varias señales:

  1. Movimiento en la zona central del frame (ignora bordes)
  2. Energía de audio suavizada en el tiempo
  3. Picos de audio (impactos, voz, cambios bruscos)

Un tramo se marca activo cuando esas señales cruzan umbrales.
Si con la configuración fija queda demasiado activo, el modo adaptativo ajusta los umbrales al percentil de intensidad.

Eso alcanza para condensar clases, grabaciones de pantalla, CCTV y material similar.
Detectores más específicos (p. ej. rallies deportivos) se pueden sumar encima del mismo índice.

Schema (v0)

El archivo .tape es SQLite:

  • media — path, duración, tamaño, hash parcial
  • timeline_bins — grilla fija (motion, audio_rms, audio_onset, luma)
  • segments — intervalos derivados (kind, start_s, end_s, score, source)
  • metatape_version, parámetros
sqlite3 lecture.mp4.tape ".schema"

Principios de diseño

  1. Local-first — el indexado corre en tu máquina
  2. Proxy ≠ original — entendés barato, cortás del source
  3. SQL es la interfaz — el índice es inspeccionable y portable
  4. Plugins después — el core guarda señales; el significado se enchufa
  5. Barato por defecto — CPU, ~1 fps de sampling, sin GPU

Non-goals (por ahora)

  • UI tipo NLE / timeline completa
  • Pipeline de upload a la nube
  • Modelos de ML obligatorios
  • Reemplazar ffmpeg

Estado

v0.1.5 en PyPI — útil para experimentos y demos.
El schema puede evolucionar; tape_version vive en meta. Ver CHANGELOG.md.

Apoyar el proyecto

Si tape-video te sirve, podés invitarme un cafecito: cafecito.app/emacorreadev

License

Apache License 2.0

Release files for tape-video 0.1.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for tape-video 0.1.5
File Size Uploaded
tape_video-0.1.5.tar.gz 27.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for tape-video 0.1.5
File Interpreter ABI Platform
tape_video-0.1.5-py3-none-any.whl Python 3 none any Details

Total release size: 55.8 kB

Release files / tape_video-0.1.5.tar.gz

Download URL tape_video-0.1.5.tar.gz
Size 27.2 kB
Tags Source
SHA-256 checksum
How to use checksums
f4bb0cb70b3c602fb19ca2cc952c55d1871520aa11ca67319cbc0283c9c6e904
BLAKE2b-256 checksum
How to use checksums
2324cf44c0a8e7d4f8e9c16d30331896a475e87e3bc415e646db3563cef28ea9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.6

Release files / tape_video-0.1.5-py3-none-any.whl

Download URL tape_video-0.1.5-py3-none-any.whl
Size 28.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b150f67bfd8f459b87de3478d1c7d4bd9347537488f94b8aca53781448640ec1
BLAKE2b-256 checksum
How to use checksums
dc1873702dba0e7ee2e60d6b933f815483bb014e82cd5ba5b38b3222faf3423d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.6

Release history Release notifications | RSS feed

This release

0.1.5 This release

2 release files

0.1.2

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page