Hoy me ha llegado otro reto que he terminado resolviendo con IA :)
Se trata de un vídeo en el que aparece una persona y detrás una fea y arrugada sábana blanca que en el vídeo se ve amarillenta. El pedido ha sido eliminar el fondo.
Las opciones iniciales eran hacerlo con kdenlive o con blender y muchas horas de marcar puntitos para cada uno de los frames. El vídeo en cuestión tiene un total de 7933 frames y como que no…
He empezado a buscar opciones y he encontrado clipdrop (cerrado aunque tiene opción de API) y he decidido seguir buscando. En la búsqueda he encontrado backgroundremover interesante pero con resultados deplorables y finalmente rembg (con mejores resultados pero enfocado a imágenes).
Así que de nuevo la solución ha sido crear un script. Esta vez me he decantado por bash.
#!/bin/bash # Fix video's FPS echo "Converting video to 30 FPS..." ffmpeg -i video.mp4 -r 30 -c:v libx264 -crf 18 -preset fast -c:a copy video_30.mp4 # Crea temp directories #mkdir -p original_images #mkdir -p processed_images # Generate one image for each frame and save to original_images directory echo "Extracting frames as images..." ffmpeg -i video_30.mp4 -vf "fps=30" original_images/frame_%04d.png # Delete the background of each image of original_images to processed_images echo "Removing backgrounds from images..." for img in original_images/frame_*.png; do output_name="processed_images/$(basename "$img")" rembg i "$img" "$output_name" done # Join all the images from processed_images to a video and use audio from video_30.mp4 echo "Combining processed images into a video with…