¿Cómo pasar una variable Bash al campo de superposición de código de tiempo en ffmpeg drawtext filter?


0

Así que estoy tratando de crear una acción de carpeta en Automator que tomará cualquier archivo mp4 que se coloque en él y superponga el archivo "código de tiempo" de ese archivo. pegado en el título del archivo como tal:

00/58/47; 02-test.mp4

con 00/58/47; 02 siendo la referencia de inicio del código de tiempo que deseo pasar al campo de código de tiempo del filtro de texto de inserción para superponer al nuevo archivo de video.

Así que, como soy muy nuevo en bash, comencé a eliminar la parte que quería y cuando pensé que tenía una referencia de código de tiempo con el formato correcto, intenté pasarla al filtro de texto de dibujo pero no funciona ...

Creo que debe tener algo que ver con la forma en que la variable $ TC está o no expandiéndose en el comando ffmpeg. Cualquier comentario o sugerencia sobre cómo pasar correctamente la variable de referencia de inicio de código de tiempo al campo de código de tiempo de superposición de texto de sorteo sería muy apreciado.

aquí es donde estoy

    for f in "$@"
    do
    FILENAME=$(basename "$f")

    #grab TC start reference from Filename
    DTC=${FILENAME:0:11}

    # create variables for first string replace
    MATCH='/'
    REPL='\\:'

    # Replace "/" with "\\:"
    CTC="${DTC//$MATCH/$REPL}"

    # create variables for second string replace
    MATCH2=';'
    REPL2='\\;'

    # Replace ";" with "\\;"
    FTC="${CTC/$MATCH2/$REPL2}"

    #put formatted timecode in a variable
    TC="$FTC"

    /usr/local/bin/ffmpeg -i "$f" -vf \
    "format=yuv444p, \ 

    #### This ${TC} Variable doesn't work... if I type out a timecode ie. 
    #### '00\:58\:47\;02' within the single quotes it works fine
    drawtext=fontfile=/Library/Fonts/Arial.ttf :timecode='${TC}' \

    :rate=30000/1001 :x=(w-tw)/2: y=(h-th)/2: fontcolor=white: fontsize=36: \
    box=1: boxcolor=0x00000099, \
    format=yuv420p" \
    -c:v libx264 -r 30000/1001 \
    -x264opts "keyint=180:min-keyint=180:no-scenecut" \
    -c:a copy -movflags +faststart 
    "/Users/Station1/Desktop/TCDONE/${FILENAME%.*}.mp4"
    mv "$f" "/Users/Station-1/Desktop/TCOG/${FILENAME%.*}.mp4"
    done

Cualquier solución o explicación sobre cómo pasar correctamente la variable $ TC al campo de superposición del código de tiempo del filtro de texto de sorteo sería muy apreciada. ¡Gracias por leer!


¿Cuál es el error real? ¿Has verificado que ${TC} en realidad proporciona lo que quieres? Muestra un eco de esta variable.
llogan

@LordNeckbeard Bueno, en la línea de comandos pude pasar por el proceso de reemplazo y hacer eco ${TC} y obtén lo que quiero = 00 \: 58 \: 47 \; 02 o lo que creo que quiero para que una variable ingrese timecode='${TC}' pero solo después de agregar dobles barras invertidas a mis reemplazos de cadena. Que voy a editar en el anterior ahora. Pero todavía no funciona como una acción de carpeta.
Derker
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.