Incrustar Subtítulos en vídeos II

En el anterior articulo escribí sobre Autosub y Ffmpeg, y como utilizarlas para incrustar subtítulos en videos. Mientras que la primera esta diseñada en exclusiva para crear archivos de texto con la transcripción de los diálogos de los vídeos, la segunda Ffmpeg es una colección muy completa de software libre que puede grabar, convertir (descodificar) y hacer streaming de audio y vídeo.

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

La Luna Llena del 1 de Agosto

 El martes día uno hay luna llena y un buen momento para realizar el estudio que se indica en el siguiente enlace  Cristales No Empañados Al...