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:
- Indexa señales baratas en local (movimiento, energía de audio)
- Consulta la línea de tiempo (SQL)
- 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 parcialtimeline_bins— grilla fija (motion,audio_rms,audio_onset,luma)segments— intervalos derivados (kind,start_s,end_s,score,source)meta—tape_version, parámetros
Podés inspeccionarlo con:
sqlite3 lecture.mp4.tape ".schema"
Principios de diseño
- Local-first — el indexado corre en tu máquina
- Proxy ≠ original — entendés barato, cortás del source
- SQL es la interfaz — el índice es inspeccionable y portable
- Plugins después — el core guarda señales; el significado (speech, deportes, CCTV) se enchufa
- 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)
| File | Size | Uploaded | |
|---|---|---|---|
| tape_video-0.1.2.tar.gz | 20.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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
|