Wie übergibt man eine Bash-Variable an das Timecode-Overlay-Feld im ffmpeg-Drawtext-Filter?

694
Derker

Ich versuche also, eine Ordner-Aktion in Automator zu erstellen, die jede MP4-Datei in diesen Ordner hineinlegt und das Hemmbild der Datei überlagert ... "Timecode" (eigentlich ist es nur eine Startreferenz für den Timecode, den ich überlagern möchte. Das ist der Fall.) Einfügen in den Titel der Datei wie folgt:

00/58/47; 02-test.mp4

wobei 00/58/47; 02 die Timecode-Startreferenz ist, die ich an das Timecode-Feld des Drawtext-Filters übergeben möchte, um die neue Videodatei zu überlagern.

Da ich in bash noch sehr neu bin, habe ich zuerst den Teil ausgezogen, den ich wollte, und als ich dachte, ich hätte einen richtig formatierten Timecode-Hinweis, versuchte ich, ihn an den drawtext-Filter zu übergeben, aber es funktioniert nicht.

Ich denke, es muss etwas damit zu tun haben, wie die $ TC-Variable im Befehl ffmpeg erweitert wird oder nicht. Jegliche Überlegungen oder Tipps zum richtigen Übergeben der Timecode-Startreferenzvariablen an das Drawcode-Overlay-Timecode-Feld wären sehr willkommen.

hier bin ich wo

 for f in "$@" do FILENAME=$(basename "$f")  #grab TC start reference from Filename DTC=$  # create variables for first string replace MATCH='/' REPL='\\:'  # Replace "/" with "\\:" CTC="$"  # create variables for second string replace MATCH2=';' REPL2='\\;'  # Replace ";" with "\\;" FTC="$"  #put formatted timecode in a variable TC="$FTC"  /usr/local/bin/ffmpeg -i "$f" -vf \ "format=yuv444p, \   #### This $ 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='$' \  :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/$.mp4" mv "$f" "/Users/Station-1/Desktop/TCOG/$.mp4" done 

Alle Lösungen oder Erklärungen, wie die $ TC-Variable ordnungsgemäß an das Timecode-Overlay-Feld des Draw-Text-Filters übergeben werden kann, sind sehr willkommen. Danke fürs Lesen!

0
Was ist der eigentliche Fehler? Haben Sie überprüft, dass `$ ` tatsächlich das liefert, was Sie möchten? Zeigt ein Echo dieser Variablen. LordNeckbeard vor 7 Jahren 0
@LordNeckbeard Nun, irgendwie konnte ich in der Kommandozeile den Ersetzungsprozess durchlaufen und `$ ` ausdrücken und bekommen, was ich will = 00 \: 58 \: 47 \; 02 oder was ich glaube Ich möchte, dass eine Variable in `timecode = '$ '` eingeht, aber erst nachdem ich meinen String-Ersetzungen doppelte Backslashes hinzugefügt habe. Was ich jetzt oben bearbeiten werde. Es funktioniert aber immer noch nicht als Ordneraktion. Derker vor 7 Jahren 0

0 Antworten auf die Frage