FFmpeg es una solución completa para grabar, convertir, editar y transmitir audio y video. Es un software de video de línea de comandos para Windows, Mac y Linux. Admite la conversión entre la mayoría de los formatos de video y audio. Admite la captura y codificación en tiempo real desde medios de transmisión, tarjetas de captura, etc. Pistas de video y audio multiplex (join) y demultipex (split) de todos los formatos de video. Editar (cortar, unir) todos los formatos de video. Filtros avanzados de video y audio. Soporte de subtítulos También se incluyen ffplay (reproductor de video básico) y ffprobe (identificador de video). Varios frontEnds / GUI están disponibles como WinFF , Avanti .
En esta segunda parte veremos la instrucción necesaria para hacer que ffmpeg incruste subtítulos con un formato diferente en cuanto al tamaño de la fuente, como al color de la misma.
ffmpeg -i video.in -vf "subtitles=archivo.srt:force_style='PrimaryColour=&H8800FFAF, FontSize=48'" -preset ultrafast video.video.out
Siendo video.in el archivo de video de entrada, video.out el archivo de video que contendrá los subtítulos, archivo.str el archivo con los subtítulos a incrustar. Con FontSize determinamos el tamaño de la fuente y ahora nos centraremos en PrimaryColour el valor &H es común para cualquier valor, 88 es el código hexadecimal para determinar la transparencia, y los seis siguientes es el codigo de color pero con la particularidad de que esta escrito al revés de como solemos utilizarlo, por ejemplo para un color rojo y una transparencia mediante el código seria 0000FF, resultando que habría que escribir &H800000FF, 80 la transparencia media y 0000FF.
En cuanto a las fuentes de las letras, el asunto se torna más complejo y dependerá mucho de las que tengamos instaladas y de la que sea la utilizada por defecto en nuestro sistema.
He escrito un script en python que genera un archivo de texto para poder usarlo como subtítulos. A tener en cuenta que la duración de los subtítulos ha de ser menor que el del vídeo, pudiendo ser usado con fines divulgativos o de ocio. En el script he configurado la duración de cada subtitulo en 5 segundos. El código del script es :
#!/usr/bin/env python3
# Crono recibe segundos muestra horas, minutos, segundos en formato 00:00:00
# Horas y Minutos son numeros enteros, posteriormente convertidos a strings
# En caso de len = 1, se antepone 0 para formato 00
def crono(v):
horas=int(v/3600)
minutos=int((v-(horas*3600))/60)
segundos=v-(horas*3600+minutos*60)
horas=str(horas)
minutos=str(minutos)
segundos=str(segundos)
if (len(horas))==1:
horas='0'+horas
if (len(minutos))==1:
minutos='0'+minutos
if (len(segundos))==1:
segundos='0'+segundos
display =horas+':'+minutos+':'+segundos+',00'
return display
# vtiempo determina la duración del subtitulo, en este caso 5 segundos (en el bucle for)
vtiempo = 0
# Texto que incluiremos para crear los subtitulos, que separamos con /
texto='Una linea de texto / otra linea de texto / otra linea de texto /
otra linea de texto / otra linea de texto / otra linea de texto /'
subtitulos=texto.split('/')
# Abrimos el archivo modo escritura, escribimos numero subtitulo,
# comienzo y fin del subtitulo y texto del mismo
archivo = open('carta.srt','w')
for i in range(len(subtitulos)):
linea1=str(i)+'\n'
linea2=crono(vtiempo)+' --> '+crono(vtiempo+5)+'\n'
archivo.write(linea1)
archivo.write(linea2)
archivo.write(subtitulos[vsubtitulo]+'\n'+'\n')
vtiempo +=5
# Cerramos el Archivo
archivo.close()
No hay comentarios:
Publicar un comentario