Orux AI / Notas sobre modelos
Kling v3: audita fotogramas antes de montar cinco segundos
El clip real de Kling v3 solicitado con cinco segundos contiene 121 fotogramas a 24 fps. Obtén un CSV de tiempos y un plan de 120 fotogramas sin generar ni modificar el vídeo.

En este artículo
Inspecciona los fotogramas decodificados antes de cerrar un montaje de cinco segundos
Una solicitud de cinco segundos no basta para colocar un clip de Kling v3 en un hueco exacto de 120 fotogramas a 24 fps. Inspecciona el archivo entregado. En el ejemplo existente de Orux de la lengüeta de armónica analizado aquí, la duración solicitada es de cinco segundos, pero el MP4 guardado contiene 121 fotogramas de vídeo decodificados a 24 fps, con una duración indicada de 5.041667 segundos. Es un límite de montaje que hay que resolver, no una prueba por sí solo de generación fallida o facturación incorrecta.
Para un editor que prepara un plano de inserto de un detalle mecánico, el resultado útil es un informe de ingesta indexado por fotograma. El ejemplo Python siguiente produce un CSV completo de marcas de tiempo y una propuesta de montaje: conservar los fotogramas 0–119, numerados desde cero, para el hueco de cinco segundos, y revisar el fotograma 120 por separado. No modifica ni exporta el vídeo. La fuente sigue disponible más abajo para que puedas valorar tanto la acción visible como su temporización.

Fotograma real 72 de la fuente, con tiempo de presentación de 3.000000 segundos. Está extraído del ejemplo existente del modelo, no es una imagen recién generada.
El caso real de Kling v3 y sus ajustes guardados
La fuente procede de la página del modelo Kling v3 de Orux. El caso guardado muestra unas pinzas interactuando con una lengüeta de cobre de armónica en un plano extremadamente cercano. Su prompt original se conserva aquí:
维修者用细镊子轻拨一片铜簧片,簧片短暂振动后静止,超近距单镜头。
Traducción explicativa para el lector: «Una persona que repara pulsa suavemente una lengüeta de cobre con unas pinzas finas; la lengüeta vibra brevemente y después queda inmóvil, en un único plano extremadamente cercano». Esta traducción explica la entrada guardada; no es otro prompt utilizado para una generación nueva.
Los ajustes almacenados son duration: 5, aspect_ratio: "16:9", mode: "std", sound: "off" y kling_v3_type: "t2v". No consta ninguna imagen de referencia como entrada de este caso. No lo describas como una prueba demostrada de conservación de la imagen en un proceso de imagen a vídeo. No se hizo ninguna solicitud nueva al modelo para este artículo.
Caso original guardado de Kling v3, solicitado con cinco segundos en modo std y sonido desactivado. El archivo auditado contiene 121 fotogramas a 24 fps; no es una generación nueva para este artículo.
El formulario público actual, comprobado el 3 de noviembre de 2026, ofrece duraciones de 3 a 15 segundos, relaciones de aspecto 16:9, 9:16 y 1:1, modos std/pro y sonido activado o desactivado. Estas opciones describen la integración de Orux comprobada. El análisis no infiere controles nativos adicionales del modelo ni afirma que elegir otro modo corregiría algún movimiento visible.
Qué muestran seis fotogramas de muestra y qué no pueden demostrar
La fuente tiene 1,280 × 720 y el archivo inspeccionado no contiene ninguna pista de audio, en consonancia con el ajuste guardado de sonido desactivado. En los momentos muestreados, el encuadre sigue mostrando un primerísimo plano de los dedos, las pinzas y la lengüeta. Cerca de los tres segundos, la forma visible de la lengüeta cambia alrededor del punto de contacto; en muestras posteriores, la herramienta se ha retirado respecto a esa posición de contacto.
Estas observaciones ayudan a decidir dónde encaja la acción en un montaje. No miden la frecuencia de vibración de una lengüeta real, no demuestran exactitud mecánica ni establecen que todos los fotogramas intermedios carezcan de artefactos. Una imagen fija tomada una vez por segundo no puede establecer un ciclo rápido de vibración. Mira el clip original e inspecciona los fotogramas intermedios pertinentes antes de usarlo como algo más que un plano ilustrativo.
| Fotograma de origen, numerado desde cero | Tiempo de presentación | Observación editorial en esa muestra |
|---|---|---|
| 0 | 0.000000 s | Establece el primerísimo plano, los dedos y la herramienta cerca de la lengüeta |
| 24 | 1.000000 s | La herramienta sigue cerca de la lengüeta; la zona de trabajo permanece visible |
| 48 | 2.000000 s | Otra referencia de la zona de contacto antes del cambio visible de postura más marcado |
| 72 | 3.000000 s | La lengüeta parece más ancha o levantada alrededor de la zona de contacto |
| 96 | 4.000000 s | La herramienta se ha retirado respecto a la posición de contacto de los tres segundos |
| 120 | 5.000000 s | El último fotograma muestreado comienza en el límite de los cinco segundos |
Desliza horizontalmente para ver toda la tabla.

Fotogramas fuente 0, 24, 48, 72, 96 y 120 en sus tiempos de presentación registrados. Se muestran con su composición completa; los rótulos y la distribución de la hoja de contactos se añadieron localmente.
Para otro tipo de decisión visual, la comparación de tomas de Kling 4.0 con el mismo prompt trata la elección entre tomas existentes. Aquí solo hay una toma guardada; la cuestión es cómo encaja la temporización real de sus fotogramas en un montaje. Ninguno de los dos artículos convierte unas pocas observaciones en una puntuación de fiabilidad de todo el modelo.
Distingue la marca de tiempo del último fotograma de la duración del clip
A exactamente 24 fps, un intervalo de fotograma equivale a 1/24 de segundo, aproximadamente 0.041667 segundos. Un hueco de cinco segundos contiene 120 intervalos de fotograma. Numerando desde cero y con una fuente que empieza en el instante cero, los inicios de fotograma son 0, 1/24, 2/24 y así sucesivamente hasta 119/24, es decir, 4.958333 segundos.
El siguiente fotograma, de índice 120, comienza a los 5.000000 segundos. Incluirlo durante otro intervalo da 121/24, aproximadamente 5.041667 segundos. Esto explica por qué la última marca de presentación del archivo y su duración indicada pueden diferir sin contradecirse. Un intervalo de montaje expresado convencionalmente como intervalo semiabierto [0, 5) excluye un fotograma cuyo comienzo coincide exactamente con los cinco segundos.
La auditoría comprueba las marcas reales de presentación en vez de multiplicar una etiqueta de frecuencia media y confiar en el resultado. Verifica que cada marca decodificada siga la cuadrícula supuesta de 24 fps con una tolerancia de dos microsegundos, permitiendo la representación de seis decimales devuelta en esta ejecución. La tolerancia es una comprobación del análisis de datos de esta muestra, no un umbral de calidad perceptiva.
No reutilices estos cálculos a ciegas con archivos de frecuencia de fotogramas variable ni con un proyecto a 23.976 fps. Necesitan otra política temporal. El código rechaza deliberadamente una frecuencia media diferente y una secuencia de marcas que no cumpla su supuesto de frecuencia constante. Su salida es un plan de ingesta de alcance limitado, no una herramienta automática de conversión de frecuencia de fotogramas.
Presupuesta los ajustes solicitados por separado de la auditoría del archivo
Las tarifas actuales de Orux siguientes se comprobaron el 3 de noviembre de 2026. La conversión configurada es 1 Credit = USD 0.005. Los valores son por segundo generado para el modo y ajuste de sonido indicados. La columna de cinco segundos es un cálculo de planificación de una solicitud nueva, no el cargo histórico de este ejemplo guardado.
| Ajustes de Kling v3 | Tarifa actual de Orux / segundo | Solicitud prevista de cinco segundos |
|---|---|---|
std, sonido desactivado — ajuste del caso guardado | 16.00008 Credits (USD 0.0800004) | 80.0004 Credits (USD 0.400002) |
pro, sonido desactivado | 21.33336 Credits (USD 0.1066668) | 106.6668 Credits (USD 0.533334) |
std, sonido activado | 24.00024 Credits (USD 0.1200012) | 120.0012 Credits (USD 0.600006) |
pro, sonido activado | 32.00016 Credits (USD 0.1600008) | 160.0008 Credits (USD 0.800004) |
Desliza horizontalmente para ver toda la tabla.
Este artículo no generó ningún cargo nuevo de generación. Inspeccionar un archivo local existente, escribir un CSV y decidir qué fotogramas conservar no exige otra invocación del modelo. Eliminar un fotograma en el montaje tampoco demuestra un derecho a reembolso ni cambia el cargo histórico de la generación. No se utilizó ningún comprobante de facturación del caso original, por lo que los 5.041667 segundos de los metadatos del archivo no deben presentarse como prueba de cuántos segundos se facturaron.
Si hace falta una dirección creativa nueva, confirma los ajustes actuales y la cotización de la cuenta antes de solicitar otra toma. Si el único problema es encajar un resultado por lo demás utilizable en un hueco exacto, resuelve primero la decisión de la línea de tiempo. Consulta la documentación de la API de Orux para los detalles de integración; este flujo trata del archivo entregado, no de mecanismos de consulta periódica o reintentos de API.
Ejecuta la auditoría de fotogramas y conserva la fuente
Instala FFmpeg para que ffprobe esté disponible en la línea de comandos y usa Python 3.9 o posterior. La documentación oficial de ffprobe explica la inspección de pistas, el recuento de fotogramas decodificados y la información por fotograma. El programa utiliza únicamente la biblioteca estándar de Python, además del ejecutable local ffprobe.
Guarda el vídeo existente desde el reproductor incrustado o la página del modelo como source.mp4 y guarda el código siguiente como audit_clip.py. Ejecuta python3 audit_clip.py source.mp4 desde un directorio con permisos de escritura. Utiliza el flujo normal de acceso al vídeo del sitio; un descargador directo sin el contexto de solicitud esperado por la web puede recibir una denegación de acceso del CDN. El programa no descarga medios, no contacta con un endpoint del modelo ni utiliza una API key.
import csv
import hashlib
import json
import subprocess
import sys
from decimal import Decimal
from fractions import Fraction
from pathlib import Path
EXPECTED_SHA = '5c948c89baf54c46c85afe65c33636bebb8a6a79acc22eebcce2412aef3e5515'
SOURCE = Path(sys.argv[1] if len(sys.argv) > 1 else 'source.mp4')
TARGET_RATE = Fraction(24, 1)
TARGET_SECONDS = 5
def probe(*args):
command = ['ffprobe', '-v', 'error', *args, '-of', 'json', str(SOURCE)]
return json.loads(subprocess.run(command, check=True, capture_output=True, text=True).stdout)
def audit_timestamps(times, rate):
if not times or rate <= 0:
raise ValueError('missing frames or invalid rate')
origin = times[0]
for index, timestamp in enumerate(times):
expected = origin + Decimal(index * rate.denominator) / rate.numerator
if abs(timestamp - expected) > Decimal('0.000002'):
raise ValueError('timestamps do not match the assumed constant rate')
def main():
if hashlib.sha256(SOURCE.read_bytes()).hexdigest() != EXPECTED_SHA:
raise ValueError('sample changed; inspect the new file before auditing')
info = probe('-count_frames', '-show_entries',
'stream=index,codec_type,width,height,avg_frame_rate,nb_read_frames:format=duration')
video = next(s for s in info['streams'] if s['codec_type'] == 'video')
rate = Fraction(video['avg_frame_rate'])
if rate != TARGET_RATE:
raise ValueError('this example expects an exact 24 fps source')
raw = probe('-select_streams', 'v:0', '-show_frames', '-show_entries',
'frame=best_effort_timestamp_time')['frames']
times = [Decimal(row['best_effort_timestamp_time']) for row in raw]
audit_timestamps(times, rate)
if int(video['nb_read_frames']) != len(times):
raise ValueError('decoded frame counts disagree')
target_count = TARGET_SECONDS * TARGET_RATE.numerator // TARGET_RATE.denominator
if len(times) < target_count:
raise ValueError('source is shorter than the target slot')
with Path('frame-times.csv').open('w', newline='') as handle:
writer = csv.writer(handle)
writer.writerow(['zero_based_frame', 'presentation_seconds'])
writer.writerows((i, str(t)) for i, t in enumerate(times))
plan = {
'width': video['width'], 'height': video['height'],
'source_rate': str(rate), 'decoded_frames': len(times),
'container_seconds': info['format']['duration'],
'last_presentation_seconds': str(times[-1]),
'audio_streams': sum(s['codec_type'] == 'audio' for s in info['streams']),
'target_frames': target_count, 'keep_frames_inclusive': [0, target_count - 1],
'last_kept_presentation_seconds': str(times[target_count - 1]),
'frames_outside_slot': len(times) - target_count,
'edit_applied': False,
}
Path('edit-plan.json').write_text(json.dumps(plan, indent=2) + '\n')
print(json.dumps(plan, indent=2))
if __name__ == '__main__':
main()El resultado ejecutado indica decoded_frames: 121, target_frames: 120, keep_frames_inclusive: [0, 119], frames_outside_slot: 1, last_kept_presentation_seconds: "4.958333" y edit_applied: false. El CSV generado contiene 121 filas de datos más la cabecera. El informe también registra las dimensiones de 1,280 × 720 y cero pistas de audio.
Conserva juntos el MP4 original, su hash, el CSV de marcas de tiempo y el plan de montaje. El hash fijado limita intencionadamente este ejemplo reproducible al archivo inspeccionado. Para otra fuente autorizada, inspecciónala y modifica deliberadamente el hash esperado y los supuestos temporales; no elimines las comprobaciones solo para forzar un resultado aprobado. Este código carga los metadatos por fotograma en memoria y está pensado para un clip corto, no para un archivo audiovisual de larga duración.
Toma la decisión de montaje de forma explícita
Hay dos decisiones razonables para esta muestra. Puedes conservar la fuente completa de 121 fotogramas cuando la secuencia que la rodea admita su duración aproximada de 5.041667 segundos, o proponer los fotogramas 0–119 para un hueco exacto de 120 fotogramas. Esta última es la propuesta generada aquí. No se proporciona ni se afirma haber creado una exportación recortada.
Antes de aplicar ese plan en un editor, examina los fotogramas fuente 119 y 120 y toda la acción que los rodea. Confirma que el punto de salida elegido no elimine una postura final importante, provoque un salto involuntario o entre en conflicto con el plano contiguo. Si el proyecto necesita un tiempo de reposo final mayor, quizá el hueco de cinco segundos sea sencillamente una restricción creativa inadecuada. Un recuento de fotogramas no puede tomar esa decisión artística por ti.
Después de aplicar un montaje o una exportación en tu propio flujo, vuelve a inspeccionar el archivo nuevo. El informe de la fuente no certifica la temporización, el sonido ni la calidad de imagen de una exportación posterior. El resultado práctico es una entrega auditable: una fuente conocida, marcas medidas, un intervalo de fotogramas propuesto explícitamente y una separación clara entre revisión creativa, duración de la línea de tiempo y coste de generación.
FAQ
¿Una solicitud de cinco segundos siempre devuelve 121 fotogramas?
Aquí no se establece ninguna regla general. Este archivo concreto guardado de Kling v3 contiene 121 fotogramas decodificados a 24 fps. Inspecciona cada archivo entregado en vez de tratar el comportamiento de los límites de esta muestra como una garantía de todo el modelo.
¿Qué fotogramas caben en el hueco exacto de cinco segundos de este ejemplo?
Los fotogramas 0 a 119 caben en el hueco indicado de 120 fotogramas a 24 fps. El fotograma 119 empieza a los 4.958333 segundos; el 120 empieza a los 5.000000 segundos y queda fuera de [0, 5). El código propone ese intervalo sin aplicar un montaje.
¿El fotograma adicional demuestra que me cobraron tiempo extra?
No. La duración del archivo por sí sola no establece la base de facturación ni el cargo histórico. La tabla de precios es un cálculo de planificación fechado para los ajustes solicitados; no se inspeccionó ningún comprobante de facturación del caso guardado.
¿La hoja de contactos puede demostrar que la lengüeta vibra correctamente?
No. Muestra posturas y posiciones de la herramienta seleccionadas, no una vibración física medida. Inspecciona el movimiento original para valorar su utilidad editorial y no uses este clip generado como prueba de exactitud mecánica.
¿La auditoría generó o modificó un vídeo?
No. Inspeccionó el MP4 existente y escribió un CSV de marcas de tiempo y un JSON con una propuesta de montaje. No hizo ninguna llamada de pago al modelo ni proporcionó una exportación recortada, una conversión de frecuencia de fotogramas o una banda sonora nueva.
Usa estos modelos con una sola API
Una API compatible con OpenAI para modelos de chat, imagen, vídeo y audio, facturada en Credits.
Artículos relacionados
Ver todos los artículos →
API de vídeo económicas: Vidu, Wan, Kling y Seedance
Compara costes por segundo y clip, entradas y límites de Vidu, Wan, Kling y Seedance, con Python, vídeos y precios fechados sin prometer mínimos globales.

FLUX.2 Pro: crea una ficha de observación A4 con Python
Reutiliza el caso real del zorro de FLUX.2 Pro para maquetar una ficha A4 con Python. Conserva la imagen cuadrada, comprueba texto y escala, y compara costes sin nuevas generaciones.

API de DeepSeek: valida cálculos antes de generar texto
Valida los cálculos antes de generar texto con DeepSeek API. Este ejemplo de Python usa centavos enteros y bloquea entradas incoherentes; es una prueba local, no de precisión del modelo.