Versión nueva optimizada 2018:
Para crear el archivo .bat debéis abrir el bloc de notas y pegar el contenido a continuación:
@echo off
cls
echo INTRODUZCA GIF
ECHO _______________
set /p gif="-> "
echo.
echo INTRODUZCA CANCION
ECHO ___________________
set /p cancion="-> "
echo.
echo INTRODUZCA FRAMERATE PARA EL VIDEO
ECHO __________________________________________
set /p rate="-> "
ffmpeg -r %rate% -i %gif% -filter_complex "loop=-1:32767,setpts=N/%rate%/TB" -i %cancion% -acodec copy -shortest salida.mkv
Lo guardáis con extensión .bat y lo ejecutáis.
Os preguntara que introduzcáis el GIF y la canción. Para ello, basta con arrastrar el archivo a la terminal y pulsar intro, o si se encuentra en el mismo directorio también podéis escribir su nombre.
También os pregunta el framerate, para que podais elegir la velocidad a la que quereis que se reproduzca el GIF. Poned un valor numérico como por ejemplo 24. A mayor valor mas velocidad.
Versión antigua 2016:
No hagais caso a esta versión, la conservo solo por motivos historicos.
@echo off
cls
echo INTRODUZCA GIF
ECHO _______________
set /p gif="-> "
echo.
echo INTRODUZCA CANCION
ECHO ___________________
set /p cancion="-> "
echo.
echo INTRODUZCA DURACION VIDEO (Sec / Min:Sec)
ECHO __________________________________________
set /p dura="-> "
del temp.ts temp.mp4 salida.mp4
ffmpeg -i %gif% -c libx264 -preset ultrafast -qp 0 -g 0 -r 60 temp.ts
ffmpeg -stream_loop -1 -i temp.ts -t %dura% -preset veryfast temp.mp4
ffmpeg -i %cancion% -i temp.mp4 -c copy -shortest salida.mp4
del temp.ts temp.mp4
Ahora lo guardáis con extensión .bat y lo ejecutáis.
Os preguntara que introduzcáis el GIF y la canción. Para ello, basta con arrastrar el archivo a la terminal y pulsar intro, o si se encuentra en el mismo directorio también podéis escribir su nombre.
También os pregunta la duración del vídeo, que será lo máximo que dure el vídeo: Si introducís un tiempo menor a la duración del audio, el vídeo solo durará ese tiempo. Si introducís un tiempo mayor al audio, el video resultante tendrá la duracion que tenga el audio. Si esto es lo que queréis, introducid 5 segundos mas de lo que dura el audio por ejemplo, ya que el tiempo introducido sera el tiempo de vídeo a codificar.
Por ejemplo: si tenéis una canción de 3 minutos e introducís 50 minutos, el vídeo resultante tendrá 3 minutos pero el ordenador se quedará procesando durante muchísimo mas tiempo que si ponéis 3:05.
Aqui teneis un ejemplo obtenido con el script y este GIF:
A continuación detalles técnicos para informáticos:
En las ultimas versiones de FFMPEG se introdujo la opción -stream_loop para hacer un bucle con la señal de entrada y asi obtener una señal de salida en bucle. No obstante, esta función es nueva y tiene un gran problema, y es que no procesa nada, simplemente copia y pega el contenido del archivo sucesivamente. Esto significa que esta señal de entrada para que funcione, debe estar en formato *.ts y no debe contener i-frames (opción -g 0).
En este script, se pasa el archivo GIF a un archivo de vídeo .ts temporal con el contenido sin perdidas o lossless (opcion -qp 0), el cual va a ser la entrada en bucle del vídeo temp.mp4 a obtener durante el tiempo establecido. A este video finalmente se le añade el audio y obtenemos la salida.
No hay comentarios:
Publicar un comentario