Skip to main content

Tape

SQLite para videos largos.

Tape convierte un video largo en un índice temporal chico, local y consultable — y después te deja cortar y comprimir desde ese índice.

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

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

Por qué

Los videos largos son, en su mayoría, tiempo muerto. La mayoría de los pipelines igual suben y procesan todo.

Tape hace lo contrario:

  1. Indexa señales baratas en local (movimiento, energía de audio)
  2. Consulta la línea de tiempo (SQL)
  3. Corta solo lo que importa (ffmpeg)

Quickstart

Requisitos:

  • Python 3.9+
  • ffmpeg en tu PATH (brew install ffmpeg)
git clone https://github.com/EmanuelCorreaAR/tape.git
cd tape
python3 -m venv .venv
source .venv/bin/activate
pip install -e .

tape doctor
tape digest lecture.mp4 --out digest.mp4

O paso a paso:

tape index lecture.mp4
tape info lecture.mp4
tape sql lecture.mp4 "SELECT t0, t1, motion, audio_rms FROM timeline_bins WHERE motion > 0.3 LIMIT 20"
tape detect lecture.mp4
tape compress lecture.mp4 --out digest.mp4

La promesa del demo:

tape compress long.mp4 --out digest.mp4
# 2h → ~15–25m de segmentos activos (depende del contenido y los umbrales)

Comandos

Comando Qué hace
tape doctor Chequea ffmpeg y el entorno
tape digest VIDEO --out digest.mp4 Todo en uno: indexar + comprimir
tape index VIDEO Arma VIDEO.tape (SQLite) con bins de motion/audio cada 1s
tape info TARGET Muestra duración, bins, segmentos y timeline
tape sql TARGET "SELECT …" Consulta el índice
tape detect TARGET Escribe segmentos activity a partir de los bins
tape segments TARGET Lista segmentos
tape clip TARGET --out clips/ Exporta clips por segmento
tape compress TARGET --out digest.mp4 Deja solo actividad → un digest + .txt resumen

TARGET puede ser el video o el archivo .tape.

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

Podés inspeccionarlo con:

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 (speech, deportes, CCTV) 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 alpha — útil para experimentos y demos. El schema puede evolucionar; tape_version vive en meta.

Apoyar el proyecto

Si Tape te sirve, podés invitarme un cafecito: cafecito.app/emacorreadev

License

Apache License 2.0

Release files for tape-video 0.1.2

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.2
File Size Uploaded
tape_video-0.1.2.tar.gz 20.6 kB Details

Built distribution (wheel)

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

Total release size: 42.3 kB

Release files / tape_video-0.1.2.tar.gz

Download URL tape_video-0.1.2.tar.gz
Size 20.6 kB
Tags Source
SHA-256 checksum
How to use checksums
9719e5bf2635eac39a1c5d590d30c33d27d7f8e5fb86e352264c9e4a2a5327a4
BLAKE2b-256 checksum
How to use checksums
3bede09c5ccfb948384ffde8a79a55c3c644e01ec0249bd14f8df2f5f7b900cb
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.2-py3-none-any.whl

Download URL tape_video-0.1.2-py3-none-any.whl
Size 21.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
fa2fb4997fdf448006af707e98da99e32c7c212e671f3b278d8b6594d6cc7b7e
BLAKE2b-256 checksum
How to use checksums
44abd5d06c69acf26faf399c17f9c7a41dd9730627309b33c93ef127a0d26465
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

0.1.5

2 release files

This release

0.1.2 This release

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