¿Qué hace image-story-assembly-hardening?
Se utiliza al ensamblar un video largo (≥5 min / ≥40 tomas) de historia de imágenes o presentación de diapositivas con ffmpeg: movimiento de push-in (Ken Burns / zoompan), fundidos cruzados, subtítulos quemados o en capas, y control de calidad previo a la entrega. Cubre los cuatro modos de falla que solo aparecen a esta escala (OOM/reducción de rendimiento en el filtro de múltiples ramas, fantasmas de subtítulos en fundidos cruzados, vibración de zoompan, artefactos de generación como líneas de escaneo y marcas de agua incrustadas) más los criterios cuantitativos para detectarlos. 触发词:图片联播、静态图叙事、长片装配、推镜卡顿、转场字幕叠影、去水印、扫描线伪影、成片 QA.
Modos de Falla y Soluciones
1. OOM/reducción de rendimiento en el filtro de múltiples ramas
- Problema: Al usar múltiples filtros de video (por ejemplo,
zoompan,fade,subtitles) en un solo gráfico de filtro, ffmpeg puede agotar la memoria (OOM) o reducir drásticamente el rendimiento. - Criterio: El uso de memoria supera el 80% de la RAM disponible, o la velocidad de codificación cae por debajo de 0.5x.
- Solución: Dividir el gráfico de filtro en etapas usando
splityselect, o procesar en lotes más pequeños.
2. Fantasmas de subtítulos en fundidos cruzados
- Problema: Los subtítulos quemados aparecen como imágenes fantasma durante los fundidos cruzados entre tomas.
- Criterio: Los subtítulos son visibles en el 10% o más de los fotogramas de fundido cruzado.
- Solución: Ajustar la duración del fundido cruzado para que coincida con los puntos de entrada/salida de los subtítulos, o usar subtítulos en capas con
subtitlesen lugar de quemarlos.
3. Vibración de zoompan
- Problema: El movimiento de zoom (Ken Burns) produce vibraciones debido a parámetros de zoompan incorrectos.
- Criterio: La velocidad instantánea de zoom varía más del 5% entre fotogramas consecutivos.
- Solución: Usar
zoompan=z='min(max(zoom,pzoom)+0.001,1.5)'con interpolación de movimiento suave y una tasa de fotogramas constante (por ejemplo,fps=24).
4. Artefactos de generación (líneas de escaneo y marcas de agua)
- Problema: Líneas de escaneo horizontales o marcas de agua incrustadas aparecen en el video final.
- Criterio: Más de 5 píxeles consecutivos de líneas de escaneo en cualquier fotograma, o marcas de agua visibles en más del 1% del área del fotograma.
- Solución: Usar
drawboxodelogopara eliminar marcas de agua, yppohqdn3dpara reducir líneas de escaneo. Preprocesar imágenes conffmpeg -i input.jpg -vf "pp=ha" output.jpg.
Ejemplo de Comando
ffmpeg -i input_%04d.jpg -filter_complex "
[0]zoompan=z='min(max(zoom,pzoom)+0.001,1.5)':d=24:fps=24[zoom];
[zoom]fade=t=in:st=0:d=0.5,fade=t=out:st=5.5:d=0.5[fade];
[fade]subtitles=subtitles.srt[sub];
[sub]drawbox=x=0:y=0:w=100:h=100:[email protected]:t=fill,delogo=x=50:y=50:w=50:h=50[out]"
-map "[out]" -c:v libx264 -preset slow -crf 22 output.mp4
Control de Calidad (QC)
Realizar los siguientes controles antes de la entrega:
- Memoria:
top -p $(pgrep ffmpeg) -b -n1 | grep ffmpeg | awk '{print $6}'(debe ser < 80% de RAM total). - Velocidad:
ffmpeg -i output.mp4 -f null - 2>&1 | grep 'speed='(debe ser > 0.5x). - Fantasmas: Extraer fotogramas de fundido cruzado y verificar visualmente la opacidad de los subtítulos.
- Vibración:
ffprobe -v error -select_streams v:0 -show_entries frame=pkt_pts_time -of csv=p=0 output.mp4 | head -50y verificar la diferencia de tiempo entre fotogramas. - Artefactos: Inspeccionar visualmente fotogramas de muestra con
ffmpeg -i output.mp4 -vf "select=not(mod(n\,100))" -vsync vfr sample_%04d.png.