Konkatenation von Strings: Problem mit ffmpeg

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
Yadgar
Beiträge: 954
Registriert: 22.11.2010 22:11:08
Wohnort: Qal'a-ye Nil, Bergisch-Afghanistan (linksrheinische Exklave)
Kontaktdaten:

Konkatenation von Strings: Problem mit ffmpeg

Beitrag von Yadgar » 20.12.2017 20:34:27

Hi(gh)!

Um mein Videobearbeitungs-Skript zu vereinfachen (es werden pro Original-Video zehn bearbeitete Videos erzeugt) definierte ich eine Variable für den eigentlichen Titel des Videos:

Code: Alles auswählen

title="Mandelbrot Zoom #3"
der dann im Aufruf von ffmpeg um die jeweiligen spezifischen Angaben zur Version ergänzt werden soll:

Code: Alles auswählen

ffmpeg -f image2 -i $workdir/$orgfile"_avg"$avgframes"-%0"$digits"d.png" -r 25 -s ${w}"x"${h} -b 6000k "/home/Video/Fertige Videos/"${title}", psychedelized ("$avgframes" frames averaged).mp4"
ffmpeg akzeptiert aber offensichtlich keine Einfügungen in den "Output"-String, die Leerzeichen enthalten, ich bekomme nämlich diese Fehlermeldung:

Code: Alles auswählen

[NULL @ 0x55e9c98b4f40] Unable to find a suitable output format for '/home/Video/Fertige Videos/Mandelbrot'
/home/Video/Fertige Videos/Mandelbrot: Invalid argument
Nun könnte ich natürlich in der Definition von $title einfach Grundstriche statt Leerzeichen verwenden... aber ginge das nicht auch komfortabler? Doppelte Klammern um $title beim Aufruf von ffmpeg? Ich habe keine Ahnung...
If operating systems were countries, Linux would be pre-1978 Afghanistan: an all-time favourite among alternative globetrotters, but shunned by mainstream tourists because of its lack of fancy beaches, shortage of alcoholic beverages and its fondness of beards...

DeletedUserReAsG

Re: Konkatenation von Strings: Problem mit ffmpeg

Beitrag von DeletedUserReAsG » 20.12.2017 20:38:56

Space escapen?


Benutzeravatar
Yadgar
Beiträge: 954
Registriert: 22.11.2010 22:11:08
Wohnort: Qal'a-ye Nil, Bergisch-Afghanistan (linksrheinische Exklave)
Kontaktdaten:

Re: Konkatenation von Strings: Problem mit ffmpeg

Beitrag von Yadgar » 20.12.2017 23:18:35

Hi(gh)!
owl102 hat geschrieben: ↑ zum Beitrag ↑
20.12.2017 20:40:47
Lese https://mywiki.wooledge.org/Quotes
O.k., ich habe verstanden: wenn ich $title innerhalb von doppelten Anführungszeichen ausgebe, werden die Leerzeichen übernommen! Also:

Code: Alles auswählen

#ffmpeg -f image2 -i $workdir/$orgfile"_avg"$avgframes"-%0"$digits"d.png" -r 25 -s ${w}"x"${h} -b 6000k "/home/Video/Fertige Videos/${title}, psychedelized ("$avgframes" frames averaged).mp4"
...und es hat funktioniert! Danke für den Tipp! Von jetzt an werde ich dich, owl102, und den Betreiber von mywiki.wooledge.org in den Creditnotes meiner weiteren Skripte erwähnen!
Zuletzt geändert von Yadgar am 20.12.2017 23:34:32, insgesamt 1-mal geändert.
If operating systems were countries, Linux would be pre-1978 Afghanistan: an all-time favourite among alternative globetrotters, but shunned by mainstream tourists because of its lack of fancy beaches, shortage of alcoholic beverages and its fondness of beards...

Benutzeravatar
Meillo
Moderator
Beiträge: 8782
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Konkatenation von Strings: Problem mit ffmpeg

Beitrag von Meillo » 20.12.2017 23:34:29

Noch besser waere es, alle Variablenexpansionen zu quoten und nicht bloss die bei der's gerade schief gegangen ist.
Use ed once in a while!

owl102

Re: Konkatenation von Strings: Problem mit ffmpeg

Beitrag von owl102 » 21.12.2017 00:10:00

Yadgar hat geschrieben: ↑ zum Beitrag ↑
20.12.2017 23:18:35
O.k., ich habe verstanden
Nur partiell.
Nehmen wir zum Beispiel

Code: Alles auswählen

$workdir/$orgfile"_avg"$avgframes"-%0"$digits"d.png"
Warum nicht einfach

Code: Alles auswählen

"${workdir}/${orgfile}_avg${avgframes}-%0${digits}d.png"
?

Ebenso schreibt man nicht

Code: Alles auswählen

"/home/Video/Fertige Videos/${title}, psychedelized ("$avgframes" frames averaged).mp4"
, sondern einfach

Code: Alles auswählen

"/home/Video/Fertige Videos/${title}, psychedelized ($avgframes frames averaged).mp4"
usw.

Antworten