Wie stapele ich die gleiche Clip-Szene am Anfang mehrerer Videos?

1294
FLYqtFLY

Nun, es war ein paar Tage, in denen nach einer geeigneten automatischen oder halbautomatischen Methode gesucht wurde, um Dateien auf diese Weise massenweise zusammenzuführen. Grundsätzlich möchte ich den gleichen Clip vor einer Reihe anderer Clips einfügen.

In diesem Fall habe ich es mit .flv, .mp4, .avi-Dateien versucht (wobei immer dieselben Codecs eingebunden wurden), und nachdem ich alle in Windows und OSx verfügbaren Programme getestet hatte, war ich nicht erfolgreich . Glauben Sie mir, ich habe sie alle ausprobiert. Die einzigen, die diese Aufgaben recht gut bewältigen sollen, stammen von Videocharge: Watermark Master und Videocharge Studio . Keiner von ihnen konnte die Aufgabe korrekt ausführen. Vielleicht hätte ich dies mit Scripting mit After Effects oder Sony Vegas erreichen können, ich habe einfach keinen gefunden.

Jetzt versuche ich einen Weg zu finden, um das gleiche durch Shell, Unix-Scripting zu erreichen ... es ist mir egal. Ich möchte Ubuntu nicht nur für diese Aufgaben installieren. Ich bin kein Programmierer, aber ich bin ziemlich hartnäckig (was mich manchmal zu unendlichen Abenden führt). Ich würde mich daher über Hilfe oder Anleitung von jedem freuen, der sich für Batch-Videobearbeitung oder Scripting interessiert.

Im Moment führen mich die einzigen nützlichen Pfade, die ich gefunden habe, entweder über Mencode oder über ffmpeg- Befehle, aber ich kann die Zusammenführung nicht im Batch durchführen. Ich interessiere mich nicht für die Art, die Videos auszusortieren. Wenn man jedoch bedenkt, dass die Operation für hunderte oder tausende von Videos durchgeführt werden würde, wäre es nicht angebracht, sie alle in separaten Ordnern zu haben, die jeweils den "einzigartigen" Intro-Clip enthalten. Ich denke, der logischste Weg wäre, die "Bündel" -Videos in einem Ordner und den Intro-Clip im selben Ordner wie der Encoder oder den Renderer zu speichern.

Vielen Dank im Voraus für jegliche Hilfe oder Anleitung.

0
Als erstes sollten Sie Ihr Videowissen erweitern: Container, Tracks, Codecs. Codierung und Muxen. Schauen Sie sich ein [Video Forum] an (http://forum.doom9.org). Endoro vor 11 Jahren 0
Weitere Informationen finden Sie in der FFmpeg-Dokumentation zum [concat demuxer] (http://ffmpeg.org/ffmpeg-formats.html#concat-1) sowie unter [So verketten (verbinden, verbinden)) Mediendateien] (https: // ffmpeg.). org / trac / ffmpeg / wiki / Wie% 20to% 20% 20% 28join% 2C% 20merge% 29% 20media% 20files () zusammenführen. LordNeckbeard vor 11 Jahren 0

2 Antworten auf die Frage

0
mk117

Nun, ich habe Videos angehängt, aber am Anfang noch nie angehängt. Sie können avidemux verwenden, um die Videos anzufügen!

Ich kann nicht gut javascripting, also entschuldigen Sie bitte, dass ich das nicht für Sie skripte. Es gibt ein Tutorial für das Scripting für Avidemux. Avidemux ist ein Open Source- und kostenloser Videokonverter. Sie können Effekte in Avidemux zu Ihrem Audio / Video hinzufügen und in mehreren Formaten speichern.

Dieses Skript ist ein Beispiel für den folgenden Seitenlink: [ ::: link ::: ]. Das Skript durchsucht einfach das orgDir-Verzeichnis und entpackt alle AVI-Dateien. Die resultierende Datei wird im Verzeichnis destDir abgelegt (mit der neuen directorySearch-API).

Avidemux-Funktionen lauten wie folgt: displayError, displayInfo, fileReadSelect, fileWriteSelect, allFilesFrom, nextFile

und weitere Funktionen: Laden, Anhängen, Speichern, Speichern von DVDs, Speichern von Datensätzen, Hinzufügen von Segmenten, goToTime, forceUnpack, setContainer

Weitere Skriptfunktionen hier: http://www.avidemux.org/admWiki/doku.php?id=using:scripting#avidemux_functions

Das Turotial Script, das die Avi-Datei konvertiert, lautet wie folgt:

//AD <- /* Simple script that scans the orgDir directory and unpack all AVI files The resulting file is put in destDir directory Using new directorySearch API */ var app = new Avidemux(); var ds = new DirectorySearch(); var orgDir; var destDir; var reg =new RegExp(".$"); /* This is for Unix For Windows change to sep="\\"; reg2=new RegExp("\\.*\\"); */ var sep="\\"; var reg2 =new RegExp("\/.*\/"); var extension; var target; // // // // select files from original & target directories // orgDir=fileReadSelect(); destDir=fileWriteSelect(); orgDir=pathOnly(orgDir); destDir=pathOnly(destDir); // // strip last \\ or // // orgDir=orgDir.replace(reg,""); destDir=destDir.replace(reg,""); print("orgDir : <"+orgDir+">"); print("destDir : <"+destDir+">"); // // Go // if(ds.Init(orgDir)) { while(ds.NextFile()) { // Only process file we want i.e. AVI if(!ds.isNotFile && !ds.isDirectory && !ds.isHidden && !ds.isArchive && !ds.isSingleDot && !ds.isDoubleDot) { extension=ds.GetExtension(); if(extension == "avi") { target=ds.GetFileName(); target=destDir+sep+target; print("***"+ds.GetFileName()+"-->"+target); processFile(orgDir+sep+ds.GetFileName(),target); } //print("File: "+ds.GetFileName()+" is "+ds.GetFileSize()+" bytes, extension "+extension); } } print("We just searched in directory \"" + ds.GetFileDirectory() + "\""); ds.Close(); } else displayError("Error initializing the directory search"); displayInfo("Finished !"); function processFile(filename, targetfile) { // Load the file app.forceUnpack(); app.load(filename); app.rebuildIndex(); app.audio.delay=0; app.audio.mixer("NONE"); app.audio.scanVBR(); app.setContainer("AVI_UNP"); app.save(targetfile); return 1; } 

Hoffe das hilft...

Quellen:

Willkommen bei Super User! Während dies die Frage theoretisch beantworten kann, ist es [bevorzugt] (http://meta.stackexchange.com/q/8259), die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz bereitzustellen. terdon vor 11 Jahren 0
OK. Entschuldigung dafür ... Ich werde meine Antwort bearbeiten ... mk117 vor 11 Jahren 0
0
FLYqtFLY

Prost viel für Ihren Vorschlag @ user2377276. Ich schätze die Mühe wirklich. In der Tat ist Ihr Workaround derjenige, der mich in die richtige Richtung führt. Nun, ich hoffe es, da ich es noch nicht geschafft habe. Bisher habe ich die Zusammenführung am ehesten durch unterschiedliche Variationen des folgenden Codes erreicht, der in demselben Verzeichnis wie die mehreren verschiedenen Videos ausgeführt wird. Die eindeutige Datei, die angehängt werden soll, wurde im Stammverzeichnis abgelegt, und ich habe C: / TEMP für die Ausgabe erstellt.

für% a in ("* .flv") kopieren Mencoder -oac "c: \ INTRO.flv" "% a" -o "c: \ TEMP \% a"

Alle Videos sind in FLV1, aber sie haben eine etwas andere Auflösung, also bekomme ich im Grunde Mist.

Ich weiß nicht, ob ich es mit ffmpeg versuchen sollte. Vorschläge?

Ich bin mir ziemlich sicher, dass dies ohne erneute Codierung erreicht werden kann, da ich mehrere Programme getestet habe und keines von ihnen erneut codiert. In einigen Fällen erzwingen sie nur die Auflösung. Tatsächlich war das Programm, das sich am besten zu verhalten schien, die AIR-Anwendung Rich Flv, die jedoch nicht im Stapelbetrieb funktioniert.