![¿Cómo puedo usar FFmpeg para agregar un ticker/texto variable a un video en vivo?](https://rvso.com/image/1366209/%C2%BFC%C3%B3mo%20puedo%20usar%20FFmpeg%20para%20agregar%20un%20ticker%2Ftexto%20variable%20a%20un%20video%20en%20vivo%3F.png)
Puedo agregar texto a un video en mi disco duro, antes de transmitirlo... usando el comando.
ffmpeg -y -i IMG_0696.MOV -acodec libmp3lame -vcodec msmpeg4 \
-b:a 192k -b:v 1000k -ar 44100 \
-vf "drawtext=text=string1 string2 string3 string4 string5 string6 string7 :expansion=normal:fontfile=/Windows/Fonts/cambriai.ttf: y=0:x=h-(2*lh)-n: fontcolor=white: fontsize=40: box=1: boxcolor=0x00000000@1" \
-an IMG_0696.avi
Ahora, quiero agregar diferentes textos en distintos momentos. Debe leerse desde un archivo que tenga el formatoel formato: Por ejemplo
00:00:10: google 00:00:20: Google 00:00:30: msft . . . 00:00:60: amzn . . . 00:05:30: java
¿Hay alguna manera de hacer que ffmpeg lea el archivo y agregue texto en momentos específicos? Eventualmente, me gustaría agregar un símbolo de cotización en vivo a un video antes de transmitirlo.
Respuesta1
Deel código fuente del drawtext
filtro(desde libavfilter/vf_drawtext.c
el árbol de origen), parece haber un textfile
parámetro que puede especificar una ruta a un archivo que contiene la cadena a dibujar (en lugar de configurar el text
parámetro como en su ejemplo). Es posible que desees experimentar pasándole una ruta de archivo como textfile
y actualizando el archivo mientras visualizas la salida de vídeo.
También necesitaría otro programa/demonio ejecutándose en paralelo para actualizar el archivo (que solo contendría el texto actual que se mostrará), pero este programa sería bastante trivial suponiendo que pudiera sincronizarlo con el reloj del sistema.
Alternativamente, puede modificar el drawtext
filtro en sí para mostrar una cadena particular basada en el código de tiempo actual (queesdisponible para filtros FFmpeg). Si bien esto requeriría modificar el código fuente del filtro y volver a compilarlo desde cero, también evitaría el uso de un programa/demonio separado ejecutándose en paralelo (ya que su propio código sería invocado cada vez que FFmpeg intente dibujar una cadena).
Sin embargo, suponiendo que el textfile
parámetro funcione (léase: se actualiza en cada fotograma), probablemente sería un mejor método, ya que un demonio simple para actualizar el archivo de texto podría escribirse en un lenguaje de secuencias de comandos como Python.