Keyframes
Script para generar Keyframes [Standalone] y QPFiles [Vapoursynth] escrito en Python
Install / Use
/learn @olivo28/KeyframesREADME
Requisitos y Dependencias
Requisitos básicos
- Python 3.7 o superior
- VapourSynth
Filtros que requieren instalación manual
Descarga e instala los siguientes filtros:
Nota: En Windows, los filtros se copian en la carpeta:
C:\Users\TuUsuario\AppData\Roaming\VapourSynth\plugins64
Librerías instalables con vsrepo.py
vsrepo.py install fmtconv scxvid wwxd lsmas ffms2
También necesitas tener instalados:
Nota: Asegúrate de que
ffmpegyffprobeestén en el PATH del sistema.
Librerías instalables con pip
Usa pip para instalarlas desde la terminal:
pip install tqdm alive-progress
Comprobar dependencias
Se añadió una opción para verificar si todas las dependencias están correctamente instaladas. Para usarla, ejecuta en la consola:
py "ubicacion/del/keyframes.py" --check
Ejemplo:
py keyframes.py --check
Esto omitirá el proceso normal y simplemente comprobará si el sistema tiene todo lo necesario.
Keyframes GUI
Gracias a nuestro amigo CiferrC, ahora hay una interfaz gráfica (GUI) para generar keyframes, también compatible con procesamiento por lotes. Funciona tanto en Windows como en Linux:
Archivos extra
Se añadieron cinco scripts adicionales: tres para Windows y dos para Linux.
Windows
keybatch.bat: genera keyframes por lotes desde una carpeta completa.keysendto.bat: permite usar el script desde el menú "Enviar a" del Explorador de Windows.keyframes.bat: script principal, se recomienda agregarlo a las variables de entorno del sistema.
Nota: Para que las opciones de batch y sendto funcionen,
keyframes.batdebe estar en las variables de entorno.
Linux
keyframes.sh: script principal para usar desde la terminal. Guárdalo en/home/usuario/.local/biny asegúrate de que esa ruta esté en tu.bashrc.keybatch.sh: equivalente a la versión batch de Windows.
Nota:
keybatch.shrequiere quekeyframes.shfuncione correctamente desde cualquier ubicación.
Keyframes
Script en Python para generar keyframes (standalone) o QPFiles desde VapourSynth.
Cambios en la V2:
- Se añadió un verificador de dependencias.
- Ahora es obligatorio usar
--clippara indicar el video de entrada.
Este script es una versión mejorada de keyframes.py, eliminando la función de slices (que sacrificaba calidad por velocidad) y mostrando más información útil en la salida.
¿Cómo usar?
Desde Python
py keyframes.py [opciones]
Opciones disponibles:
--clip: Ruta del video (obligatorio).--use-scxvid: Usascxviden lugar dewwxd.--use-doble: Usa ambos filtros (scxvidywwxd) para mayor precisión. (Recomendado)--autismo: Nivel de análisis (resolución). Por defecto: 3.--out-file: Archivo de salida. Si no se especifica, se usará el nombre del video con_keyframes.log.--reescribir: Sobrescribe el archivo de salida si ya existe.--analize: Desactiva el uso deffprobe(por defecto está desactivado).--linux: Ajusta el formato del keyframe para mayor compatibilidad en Linux.--check: Verifica las dependencias.
Como módulo de VapourSynth
import keyframes as kf
import vapoursynth as vs
clip = video = vs.core.ffms2.Source("video.mkv") # Reemplaza "video.mkv" con tu archivo
kf.generate_keyframes_single(clip=clip, out_path="archivo_de_salida.log", autismo=3, reescribir=True, analize=False, lin=False, use_scxvid=False)
kf.generate_keyframes_double(clip=clip, out_path="archivo_de_salida.log", autismo=3, analize=False, lin=False, reescribir=True)
reescribires opcional.
Generar QPFiles
El script también puede generar QPFiles compatibles con x264/x265.
Requiere tener VapourSynth correctamente instalado.
import keyframes as kf
kf.generate_qpfile_double(clip=clip, fileName="video.mkv", out_path="archivo_de_salida.qp", autismo=3, lin=False, reescribir=True)
Útil para pasarle el QPFile al compresor y mantener los keyframes del análisis.
Parámetro --autismo
Define la resolución a la que se realiza el análisis (por rendimiento o compatibilidad):
0 = resolución original
1 = 640x360
2 = 720x480
3 = 1280x720 (por defecto)
4 = 1440x810
5 = 1600x900
6 = 1920x1080
7 = 3840x2160 (modo "por puro meme" xD)
Este parámetro funciona tanto para keyframes como para qpfile.
Extraer Audio
También se puede extraer el audio de un video:
import keyframes as kf
kf.extraer_audio("video.mkv", stream=0, out_path="carpeta/destino/")
stream=0es el primer audio,1el segundo, y así sucesivamente.- Si no se indica
out_path, el archivo se guardará junto al.vpy.
¿Cómo generar Keyframes/QPFiles desde .bat o .sh?
Windows
Crear un archivo llamado keyframe.bat:
py "ruta/keyframes.py" --clip %1 --use-doble --out-file "%~n1_keyframe.log" --autismo 3
Agregalo a tus variables de entorno. Luego en CMD/PowerShell:
keyframe "video.mkv"
Opción "Enviar a":
Crear un archivo .bat y guardarlo en shell:sendto:
@echo off
for %%I in (%*) do (
py "ruta/keyframes.py" --clip "%%I" --use-doble --out-file "%%~nI_keyframe.log" --autismo 3
)
Linux
Crear un archivo keyframe.sh:
#!/usr/bin/env bash
py "ruta/keyframes.py" --clip "$1" --use-doble --out-file "${1%.*}_keyframe.log" --autismo 3
Guardalo en ~/.local/bin y asegurate de que esté en el PATH.
Luego en la terminal:
keyframe "video.mkv"
Puedes añadirle más argumentos si los necesitas.
CRC32
Script para calcular y/o colocar CRC32 en tus archivos de video.
Argumentos:
--calcular_crc: calcula el CRC32 y lo imprime.--colocar_crc: calcula el CRC32 y renombra el archivo agregándolo al nombre.
Uso
Calcular:
py crc.py "video.mkv" --calcular_crc
Colocar:
py crc.py "video.mkv" --colocar_crc
Ejemplo práctico (Windows, .bat):
set name=Mi video encodeado
set mux=[Raws] Mi video encodeado - 01.mkv
for /f "tokens=* usebackq" %%f in (`py crc.py "%mux%" --calcular_crc`) do (
set crcmux=.*%name%*.*.[%%f].*.mkv
)
py crc.py "%mux%" --colocar_crc
for /f "usebackq delims=" %%b in (`dir /b ^| findstr /r /c:"%crcmux%"`) do set _crcmux=%%b
pscp -pw contraseña -P puerto "%_crcmux%" usuario@host:"/ruta/de/destino/"
Related Skills
node-connect
344.4kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
99.2kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
344.4kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
344.4kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
