# Abspann für mehrere Videoclips mit verschiedenem Inhalt Automatisieren



## greentom (21. März 2013)

Hallo Zusammen,

Ich habe mehrere VideoClips deren Dateiname folgende Struktur aufweist:
Artist Trennwort("from") Titel


Nun würde ich gerne jedem Clip einen Ab- oder Vorspann mit dem selben Layout spendieren, jedoch mit den individuellen Angaben von Artist und Titel.
Also ganz ähnlich wie es MTV und VIVA früher gemacht haben, als dort noch Musik lief  

Mit welcher Software lässt sich das ganze realisieren und vor allem wie?
Gibt es evtl. Tutorials zu diesem Thema, die Ihr kennt und teilen würdet.

Sollte es einfacher mit Überblendungen gehen (MTV Beispiel), so wäre mir damit auch schon sehr geholfen.



Viele Grüße 
Tom


----------



## chmee (23. März 2013)

Von wieviel Videoclips reden wir? Von 6 oder von 66? Das Scripten/Optimieren für zB After Effects dauert deutlich länger als mal an 10 Videos Hand anzulegen und in lediglich 2 Ebenen den Text auszutauschen.

mfg chmee


----------



## greentom (23. März 2013)

Hallo, wir sprechen von ca. 150 Videos.

Ich hab mir überlegt, dass man die Dateinamen in ne txt schreiben lassen könnte und dann in Photoshop z.B.? Mit Platzhaltern den Namen in eine Vorlage einfügen lässt und das Bild mit dem Dateinamen benennt. Vor die Videos einfügen müsste ich dann wieder händisch. So die Theorie, wie das in der Praxis funktioniert weiß ich nicht.


----------



## chmee (23. März 2013)

Bei 150 Videos wiederum würd ich natürlich auch die Automatisierung empfehlen  Es gäbe After Effects und ihre Scripting Engine. Willst Du denn nur ein Standbild rüberlegen (ergo sind nur Standbilder mit Alpha zu scripten) oder willst Du ne schicke Animation machen?

Meine gedankliche Herangehensweise:
(A) Video mit Dateiname Artist-Title in einen Ordner werfen (Endung unerheblich)
(B) per Script in AE NUR die Intros/Outros erstellen lassen, Prefix I_ und O_ (fixe Länge zB erste 8 Sekunden und letzte 6 Sekunden)
(C) per AVISynth mit Originaldatei zusammenschneiden lassen.
(D) per Batch nochmal ins Endformat konvertieren lassen.

man könnte (B)-(D) auch in AE in einem Rutsch machen, kostet aber Zeit, weil das ganze Video durch AE geworfen wird. Ach ja, möglicherweise kann das Blender auch, damit kenne ich mich aber 0/Null aus.

mfg chmee


----------



## greentom (23. März 2013)

Mir würde ein Standbild mit " Es folgt Artist - Titel" vollkommen reichen, die Videos sind unter CC lizenziert, so dass mir auch ein Vorspann-Bild lieber wäre als eine Überblendung.
Ich versuche es mal mit AE die Tage, habe leider gerade keine Zeit mich damit zu beschäftigen.

Gibt es zu dem Scripting Tutorials oder könntest du mir sagen, was ich da für Anweisungen brauche.

Ich Danke dir Chmee für die Hilfe. In drei Foren habe ich die Frage gestellt, du bist der erste der mir Helfen konnte.


----------



## chmee (23. März 2013)

Wenn es nur Standbilder I(ntro) und O(utro) sind, dann bau Dir in eine Textdatei eine Pseudo-Datenbanktabelle oder bau sie Dir mit einer Tabellenkalkulation und exportiere sie zB als csv. Egal mit welchem Scripting, wir brauchen (eher Du ) eine Datenbasis, um komfortabel (noch wichtiger: konsistent) zu arbeiten. Drin stehen sollten Original-Dateiname, Introtexte, Outrotexte, Ziel-Dateiname.

mfg chmee


----------



## greentom (23. März 2013)

Ich hab mir jetzt über die Kommandozeile die Dateinamen in einer txt ausgeben lassen.

#############
Falls es mal später jemand braucht:
Eingabeaufforderung:
cmd
c:
cd\
cd lala <---Verzeichnis mit den Videos
dir  >liste.txt
#############

Dann habe ich den Inhalt der .txt in LibreOffice Calc eingefügt. Es öffnet sich der Textimport. Dort habe ich per "feste Breite" Datum und Zeit entfernt. 
Dann habe ich per "Suchen und Ersetzen" die Dateiendungen entfernt. z.B. Suchen nach .avi und ersetzen durch leer lassen.

Nun habe ich in einer Spalte:
Titel from Artist
Titel from Artist
Titel from Artist

Wie kann ich jetzt Titel und Artist trennen so dass jeder seine eigene Spalte erhält und from wegfällt?


----------



## chmee (23. März 2013)

Naja, letztlich... wenn alle Daten (Artist und Title) im Dateinamen drin sind - und Du ansonsten keine Extrawünsche hast, kann man alles gleich im Script durchkauen. Gib mir mal n Moment, dann schreib ich Dir ein "Anfangsscript" für Photoshop, um zu zeigen, wie es gehen könnte..

(Ach ja, die Videodateien. Sind die alle gleich groß? 720px breit oder 1280px breit? SD HD FullHD?)

(Ach Ja, die Zweite: Problematisch ist der Trenner "from". Woher soll das Script wissen, dass ein "from" im Titel oder ArtistNamen nicht der Trenner ist Gibt es so eine Datei?)

mfg chmee


----------



## greentom (23. März 2013)

Hallo,

die Videos sind unterschiedlich groß. Zum großen Teil HD 1280x720, teilweise FullHD1920x1080 und einige kleiner in SD.

Ich weiß nicht, ob wir uns richtig verstehen.
Die Dateinamen lauten beispielsweise:

"Baby One More time from Britney Spears.mp4"^^
"Nothing else matters from Metallica.mp4"

Nach diesem Schema sind alle Videos benannt, so das "from" immer den Titelnamen vom Künstler trennt.

Edit. 
Und in der Tabelle steht nun alles in einer einzigen Spalte:

........................Spalte1....................................
Zeile1:  Baby One More time from Britney Spears
Zeile2:  Nothing else matters from Metallica


Deswegen die Frage oben, wie man eine zusätzliche Spalte erstellen kann, die automatisch alles nach "from" in Spalte zwei Schreibt. Damit es wie folgt aussieht:

.......................Spalte1.................................Spalte2....................
Zeile1:  Baby One More time..................Britney Spears
Zeile2:  Nothing else matters.................Metallica

Falls das Nötig ist.
Sieht ja auch besser aus, wenn Beides untereinander steht und nicht alles in einer Zeile.

Vielen Dank chmee

Edit2.
"from" kommt nur in einer Datei im Titel vor. Also könnte man das händisch machen oder es fliegt einfach raus^^


----------



## chmee (23. März 2013)

Doch, dann habe ich das alles richtig verstanden. Der Sinn und Zweck dieser Textdatei wäre gewesen, zusätzliche Informationen mitgeben zu können. Variablen, die während des Abarbeitens individuell gesetzt werden könnten (zB Farbe der Bauchbinde abhängig von Musikstil). Wenn aber wirklich nur Titel und Artist von Nöten sind, dann brauchts auch diese externe Datei nicht. Das erleichtert das Script.

mfg chmee


----------



## greentom (23. März 2013)

So in etwa. siehe Anhang
evtl. noch mein Logo; muss aber nicht sein.

Weißt du zufälligerweise trotzdem, wie man den Interpreten in eine extra Spalte kriegen würde. Rein aus Interesse. Sowas könnte man mal gebrauchen.


----------



## chmee (24. März 2013)

http://www.phreekz.de/wordpress/201...-dateinamen-lesen-und-als-textlayer-ausgeben/




```
// Example of Reading all Files in a Folder 
// and creating Textlayers from its filenames

// enable double clicking from the Macintosh Finder or the Windows Explorer
#target photoshop

// in case we double clicked the file
app.bringToFront();

// debug level: 0-2 (0:disable, 1:break on error, 2:break at beginning)
// $.level = 0;
// debugger; // launch debugger on next line

var strtRulerUnits = app.preferences.rulerUnits;
var strtTypeUnits = app.preferences.typeUnits;
app.preferences.rulerUnits = Units.PIXELS;
app.preferences.typeUnits = TypeUnits.POINTS;

var docRef = app.documents.add(1280, 720, 72);
var selRef = app.activeDocument.all;
        
var textColor = new SolidColor();
textColor.rgb.red  = 255;
textColor.rgb.green = 0;
textColor.rgb.blue = 0;
    
// suppress all dialogs
app.displayDialogs = DialogModes.NO;

try {
	// Ask user for input folder
	var inputFolder = Folder.selectDialog("select Folder");
	var fileList = inputFolder.getFiles("*.*");
	for (var i = 0; i < fileList.length; i++) {
		// split example
		var explodedName = fileList[i].name.split(".");
		var newText = explodedName[0] +String.fromCharCode(13)+"from"+String.fromCharCode(13)+explodedName[1];
		//var newText = fileList[i].name;
		var newTextLayer = docRef.artLayers.add();
		newTextLayer.kind = LayerKind.TEXT;
		newTextLayer.textItem.contents = newText;
		newTextLayer.textItem.position = Array(240, 10+i*36);
		newTextLayer.textItem.size = 12;
		newTextLayer.textItem.color = textColor;
	}
}
catch (exception) {
	alert(exception);
}
finally {
	app.displayDialogs = startDisplayDialogs;
}


app.preferences.rulerUnits = strtRulerUnits;
app.preferences.typeUnits = strtTypeUnits;
docRef = null;
textColor = null;
newTextLayer = null;
```
Das ist ein simples Beispiel. Ordner auswählen. Es werden die Dateinamen ausgelesen, bei mir am Punkt . gesplittet und in ein Textlayer kodiert. Du müsstest nun die Hintergrundfarbe setzen/füllen, den split-String ändern, den Textlayer ändern und jeweils pro Schleifendurchgang zB als jpg speichern.

Mach Dir ne Datei mit Endung jsx, kopier das Beispielscript hinein und mit Doppelklick darauf müsste Photoshop seinen Job starten.

-> Das ist der erste Teil, die Bilddateien erstellen. Danach müsstest Du sie zB mit AVISynth mit den Videodateien mergen.

mfg chmee


----------



## greentom (24. März 2013)

Hallo,

Vielen Dank für deine Arbeit.
Bei mir werden leider die Leerzeichen als "%20" ausgegeben. Und die Dateiendung bleibt bestehen.
Beispiel:

Shapes%20In%20Motion%20
from
%20Pavel%20Pavlov.mp4

Wie kann ich die Hintergrundfarbe ändern?
Wie kann ich ein Bild einfügen, wie z.B. oben das "CC" Logo?
Wie bringe ich es dazu die Datei als jpeg zu speichern?

Schriftart und Position ändern habe ich hinbekommen.

Danke und viele Grüße
Tom


----------



## chmee (24. März 2013)

Nun. Der essentielle Teil meinerseits war, Dir aufzuzeigen, dass es geht. Ich hab nicht wirklich die Zeit, Dir die Lösung zu erarbeiten. 

Da Du nun mit Javascript in Kontakt gekommen bist, macht es Sinn im Befehlssatz der Sprache zu stöbern.
(A) %20 durch Leerzeichen ersetzen - replace() - das hilft auch bei der Frage, was mit der Endung geschehen soll - am Besten durch Nichts ("") ersetzen 
(B) Für alle weitereren Fragen gibt es die Samples im Photoshop/Scripting-Ordner. Zudem ist dort der Befehlsschatz der Adobe-API beschrieben.

Es gibt ein Forum, das sich nur mit dem Adobe Scripting beschäftigt. Viele Fragen und Antworten gibt es dort. http://www.ps-scripts.com/bb/index.php

Hier noch ein älteres Beispiel, wie man Dateien speichert: http://www.phreekz.de/wordpress/2009/03/photoshop-scripting-in-jsx/

mfg chmee


----------



## greentom (25. März 2013)

Vielen Dank für die Hilfe, chmee.

Ich nehme an, dass http://www.phreekz.de dein blog ist? Würde da gerne den "Spenden"-Button in Anspruch nehmen.
Weil von "Vielen Danks" hast du wahrscheinlich schon den Keller voll^^

viele Grüße
Tom


----------



## chmee (25. März 2013)

Wenn ich helfen kann..  Betrachte es als egoistischen Trieb, sowas wie ein Mutter-Theresa-Komplex  (Danke übrigens)

mfg chmee


----------



## greentom (26. März 2013)

Also bei mir klappt gar nichts. 
Die Hintergrundfarbe ändert sich nicht, obwohl dies in einem Beispiel so gezeigt wird.


```
var bgColor = new SolidColor();
bgColor.rgb.red = 140;
bgColor.rgb.green = 125;
bgColor.rgb.blue = 120;
backgroundColor = bgColor;
 
var docRef = app.documents.add(1280, 720, 72, DocumentFill.BACKGROUNDCOLOR);
```

Die Leerzeichen lassen sich nicht herstellen "%20":


```
newTextLayer.textItem.contents = newText.replace ("%20", " ");
```

Und das Speichern funktioniert auch nicht.
Es kommt folgende Skriptwarnung:
"Syntaxfehler: Allgemeiner Photoshop-Fehler. Die Funktion steht in dieser Version vo PS möglicherweise nicht zur Verfügung.
-Konnte keine Kopie speichern unter "\...\Shapes in Motion
from
...", weil der Dateiname nicht gültig war."







```
// Example of Reading all Files in a Folder 
// and creating Textlayers from its filenames
 
// enable double clicking from the Macintosh Finder or the Windows Explorer
#target photoshop
 
// in case we double clicked the file
app.bringToFront();
 
// debug level: 0-2 (0:disable, 1:break on error, 2:break at beginning)
// $.level = 0;
// debugger; // launch debugger on next line
 
var strtRulerUnits = app.preferences.rulerUnits;
var strtTypeUnits = app.preferences.typeUnits;
app.preferences.rulerUnits = Units.PIXELS;
app.preferences.typeUnits = TypeUnits.POINTS;


var bgColor = new SolidColor();
bgColor.rgb.red = 140;
bgColor.rgb.green = 125;
bgColor.rgb.blue = 120;
backgroundColor = bgColor;

var docRef = app.documents.add(1280, 720, 72, DocumentFill.BACKGROUNDCOLOR);
var selRef = app.activeDocument.all;
    
var textColor = new SolidColor();
textColor.rgb.red  = 0;
textColor.rgb.green = 140
textColor.rgb.blue = 200;

// suppress all dialogs
app.displayDialogs = DialogModes.NO;
 
try {

    // Ask user for input folder
    var inputFolder = Folder.selectDialog("select Folder");
    var fileList = inputFolder.getFiles("*from*");
    for (var i = 0; i < fileList.length; i++) {
        // split example
        var explodedName = fileList[i].name.split("from");
        var newText = explodedName[0] +String.fromCharCode(13)+"from"+String.fromCharCode(13)+explodedName[1];
        //var newText = fileList[i].name;
        var fontName = "Philosopher";    
        var newTextLayer = docRef.artLayers.add();
        newTextLayer.kind = LayerKind.TEXT;
        newTextLayer.textItem.contents = newText.replace ("%20", " ");
        newTextLayer.textItem.position = Array(340, 50+i*36);
        newTextLayer.textItem.size = 36;
        newTextLayer.textItem.color = textColor;
        newTextLayer.textItem.font = fontName;
        
      saveFile = new File(newText+".jpg");
      saveOptions = new JPEGSaveOptions(); 
      saveOptions.embedColorProfile = true;
      saveOptions.formatOptions = FormatOptions.STANDARDBASELINE;
      saveOptions.matte = MatteType.NONE; 
      saveOptions.quality = 9;

activeDocument.saveAs(saveFile, saveOptions, true,Extension.LOWERCASE);
activeDocument.close(SaveOptions.DONOTSAVECHANGES) ;

               
    }
}


catch (exception) {
    alert(exception);
}
finally {
    app.displayDialogs = startDisplayDialogs;
}
 

app.preferences.rulerUnits = strtRulerUnits;
app.preferences.typeUnits = strtTypeUnits;
docRef = null;
textColor = null;
newTextLayer = null;
```


----------



## greentom (26. März 2013)

Okay, Hintergrundfarbe wechseln hat jetzt geklappt:

```
var docRef = app.documents.add(1280, 720, 72,);
var selRef = app.activeDocument.all;
    
var textColor = new SolidColor();
textColor.rgb.red  = 0;
textColor.rgb.green = 140
textColor.rgb.blue = 200;

var bgColor = new SolidColor();
bgColor.rgb.red = 140;
bgColor.rgb.green = 125;
bgColor.rgb.blue = 150;
backgroundColor = bgColor;

docRef.selection.selectAll(); docRef.selection.fill(backgroundColor); docRef.selection.deselect();
```



EDIT.
Das mit dem "ersetzen durch" auch, beinahe.

```
newTextLayer.textItem.contents = newText.replace (/%20/g, "");
```

Problem ist jetzt nur, dass in der dritte Zeile vor dem Artist ein Leerzeichen auftritt.



Folgendes funktioniert zum speichern auch nicht:
"Skriptwarnung: Fehler: Da Dokument wurde noch nicht gespeichert.


```
var doc = app.activeDocument;
var docName = doc.name;
docName = docName.match(/(.*)(\.[^\.]+)/) ? docName = docName.match(/(.*)(\.[^\.]+)/):docName = [docName, docName];
var saveName = new File(decodeURI(doc.path)+'/'+docName[1]+'.jpg');
saveJPEG( app.activeDocument, saveName, 10 );
```


----------



## greentom (26. März 2013)

Filename und Videoname sind nun identisch.
Das Leerzeichen vor dem Artist habe ich nicht wegbekommen.

Ein riesiges Problem bleibt, ab dem zweiten Durchlauf überlappt die Schrift. Wie sage ich Photoshop, das es von vorne anfangen soll?

```
// Example of Reading all Files in a Folder 
// and creating Textlayers from its filenames
 
// enable double clicking from the Macintosh Finder or the Windows Explorer
#target photoshop
 
// in case we double clicked the file
app.bringToFront();
 
// debug level: 0-2 (0:disable, 1:break on error, 2:break at beginning)
// $.level = 0;
// debugger; // launch debugger on next line
 
var strtRulerUnits = app.preferences.rulerUnits;
var strtTypeUnits = app.preferences.typeUnits;
app.preferences.rulerUnits = Units.PIXELS;
app.preferences.typeUnits = TypeUnits.POINTS;




var docRef = app.documents.add(1280, 720, 72,);
var selRef = app.activeDocument.all;
    
var textColor = new SolidColor();
textColor.rgb.red  = 255;
textColor.rgb.green = 255
textColor.rgb.blue = 255;

var bgColor = new SolidColor();
bgColor.rgb.red = 99;
bgColor.rgb.green = 185;
bgColor.rgb.blue = 232;
backgroundColor = bgColor;

docRef.selection.selectAll(); docRef.selection.fill(backgroundColor); docRef.selection.deselect();

// suppress all dialogs
app.displayDialogs = DialogModes.NO;
 
try {

    // Ask user for input folder
    var inputFolder = Folder.selectDialog("select Folder");
    var fileList = inputFolder.getFiles("*from*");
    for (var i = 0; i < fileList.length; i++) {
        // split example
        
        var explodedName = fileList[i].name.split("from");
        var newText = explodedName[0] +String.fromCharCode(13)+"from"+String.fromCharCode(13)+explodedName[1];
        //var newText = fileList[i].name;
        var fontName = "Philosopher";    
        var clearName = newText.replace (/%20/g, " ");
        var clearerName = clearName.replace (/.mp4/g,"");
        var newTextLayer = docRef.artLayers.add();
        newTextLayer.kind = LayerKind.TEXT;
        newTextLayer.textItem.contents = clearerName;
        newTextLayer.textItem.position = Array(200, 450+i*36);
        newTextLayer.textItem.size = 36;
        newTextLayer.textItem.color = textColor;
        newTextLayer.textItem.font = fontName;
        activeDocument.flatten();
        
    
    saveFile = new File("/C/2 CC Attribution Share Alike/"+fileList[i].name.replace (/.mp4/g,"")+".jpg");
      saveOptions = new JPEGSaveOptions(); 
      saveOptions.embedColorProfile = true;
      saveOptions.formatOptions = FormatOptions.STANDARDBASELINE;
      saveOptions.matte = MatteType.NONE; 
      saveOptions.quality = 9;

activeDocument.saveAs(saveFile, saveOptions, true,Extension.LOWERCASE);
//activeDocument.close(SaveOptions.DONOTSAVECHANGES) ;


               
    }
}


catch (exception) {
    alert(exception);
}
finally {
    app.displayDialogs = startDisplayDialogs;
}
 

app.preferences.rulerUnits = strtRulerUnits;
app.preferences.typeUnits = strtTypeUnits;
docRef = null;
textColor = null;
newTextLayer = null;
```


----------



## chmee (26. März 2013)

Du musst das Objekt TextLayer nach dem Speichern wieder löschen. Oder Du setzt einmalig, vor der Schleife, den TextLayer ohne Inhalt und beschriftest immer wieder neu anstatt einen neuen Layer zu erstellen. Hier ist ein Script, das den ersten Textlayer findet. Damit könntest Du darauf zugreifen.

Leerzeichen am Anfang und am Ende werden mit trim() entfernt. ABER diese Funktion gibt es erst seit Neuerdings in den neueren Browsern, deswegen möchte ich keine Grantie geben, ob sie im Adobe-Scripting funktioniert.

mfg chmee


----------



## greentom (26. März 2013)

Danke, bin auch gerade darauf gekommen und wollte das Ergebnis posten.


```
try {

    // Ask user for input folder
    var inputFolder = Folder.selectDialog("select Folder");
    var fileList = inputFolder.getFiles("*from*");
    for (var i = 0; i < fileList.length; i++) {
        // split example
        var explodedName = fileList[i].name.split("from");
        var newText = explodedName[0] +String.fromCharCode(13)+"from"+String.fromCharCode(13)+explodedName[1];
        //var newText = fileList[i].name;
        var fontName = "Philosopher";    
        var clearName = newText.replace (/%20/g, " ");
        var clearerName = clearName.replace (/.mp4/g,"");
        var newTextLayer = docRef.artLayers.add();
        newTextLayer.kind = LayerKind.TEXT;
        newTextLayer.textItem.contents = clearerName;
        newTextLayer.textItem.position = Array(200, 450);
        newTextLayer.textItem.size = 36;
        newTextLayer.textItem.color = textColor;
        newTextLayer.textItem.font = fontName;

        
    
    saveFile = new File("/C/2 CC Attribution Share Alike/"+fileList[i].name.replace (/.mp4/g,"")+".jpg");
      saveOptions = new JPEGSaveOptions(); 
      saveOptions.embedColorProfile = true;
      saveOptions.formatOptions = FormatOptions.STANDARDBASELINE;
      saveOptions.matte = MatteType.NONE; 
      saveOptions.quality = 9;

activeDocument.saveAs(saveFile, saveOptions, true,Extension.LOWERCASE);
//activeDocument.close(SaveOptions.DONOTSAVECHANGES) ;
newTextLayer.remove();

    }
}
```

trim() funktioniert in PS leider nicht.


----------



## chmee (27. März 2013)

Wenn Du nach "javascript trim" suchst, findest Du Helferfunktionen.

mfg chmee


----------



## greentom (7. April 2013)

So ich hab jetzt alles so weit fertig. Jetzt müssten noch das Bild für paar Sekunden gezeigt und mit dem dazugehörige Video zusammen geschnitten werden. 

Könntest du mir bitte sagen wie ich das hinbekommen könnte?


----------



## chmee (16. April 2013)

Da ich aktuell mit ffmpeg zu tun habe, würd ich sagen, nimm dies  ffmpeg ist kommandozeilenbasiert, aber das Schweizer Taschenmesser. Lade Dir die Win-Versionen Hier runter -> http://ffmpeg.zeranoe.com/builds/

Der erste Schritt wäre, den Codec der Videos zu erhalten.  In der DOS-Shell in den richtigen Ordner (ffmpeg) gehen:

```
ffmpeg -i video.avi
```

Der zweite Schritt, aus dem Einzelbild ein Video zu generieren - optimal in das Codecformat, das Du oben rausbekommen hast:

```
ffmpeg -loop 1 -f image2 -i picture.jpg -c:v libx264 -t 30 Intro1.mp4
```
-t ist die Länge und -c:v der Videocodec. Um die Automatisierung beizubehalten, sollte sich der Name des Standbildvideos kaum vom Videoclip unterscheiden. Tatsächlich müsstest Du das im Batch machen, damit der Ordner mit allen Standbildern selbständig durchgerödelt wird. (Schau Dir zB das hier an.)

Der letzte Schritt ist das mergen/concatenaten/zusammenfügen von Intro und Video. Jetzt käme es uns Zugute, wenn Standbildvideo und Videoclip (fast) den gleichen Namen haben, damit wir sie wiedermals via Batch in der DOS-Shell abarbeiten können. Das Zusammenfügen in ffmpeg sieht so aus:

```
ffmpeg -i input1.avi -qscale:v 1 intermediate1.mpg
ffmpeg -i input2.avi -qscale:v 1 intermediate2.mpg

cat intermediate1.mpg intermediate2.mpg > intermediate_all.mpg
//(unter windows copy anstatt cat)
ffmpeg -i intermediate_all.mpg -qscale:v 2 fertig.avi
```

Quellen und Lesetipps:
http://ffmpeg.org/trac/ffmpeg/wiki/Create a video slideshow from images
http://www.catswhocode.com/blog/19-ffmpeg-commands-for-all-needs
http://ffmpeg.org/faq.html#How-can-I-concatenate-video-files_003f

mfg chmee


----------



## greentom (18. April 2013)

Hallo,

hab gerade erst gesehen, dass du geantwortet hast. Danke dir. Ich mach mich morgen mal ran.


----------

