Wie kann ich die gleiche Clip-Szene stapelweise am Anfang mehrerer Videos einfügen?

Wie kann ich die gleiche Clip-Szene stapelweise am Anfang mehrerer Videos einfügen?

Nun, ich habe ein paar Tage lang nach einer geeigneten automatischen oder halbautomatischen Methode gesucht, um auf diese Weise mehrere Dateien zusammenzuführen. Im Grunde möchte ich erreichen, dass derselbe Clip vor einer Reihe anderer Clips eingefügt wird.

In diesem Fall habe ich es mit .flv-, .mp4- und .avi-Dateien versucht (immer mit denselben Codecs), und nach dem Testen ist es mir nicht gelungenalle verfügbaren Programmesowohl unter Windows als auch unter OSx. Glauben Sie mir, ich habe sie alle ausprobiert. Die einzigen, die diese Art von Aufgaben angeblich gut bewältigen können, sind von Videocharge:Wasserzeichen-MasterUndVideocharge Studio. Keiner von ihnen konnte die Aufgabe korrekt ausführen. Vielleicht hätte ich dies irgendwie erreichen können, indem ich ein Skript erstellt hätte mitNachwirkungenoderSony Vegas, ich habe einfach keine gefunden.

Jetzt versuche ich, einen Weg zu finden, dasselbe zu erreichen, entweder per Shell, Unix-Skripting... Mir ist das egal. Ich möchte Ubuntu einfach nicht nur für diese Aufgaben mounten. Ich bin kein Programmierer, aber ich bin ziemlich stur (was manchmal dazu führt, dass ich nicht enden will), also wäre ich für Hilfe oder Anleitung von jedem dankbar, der sich mit Batch-Videoverarbeitung oder Skripting auskennt und gut genug ist.

Im Moment führen mich die einzigen nützlichen Wege, die ich gefunden habe, dazu, entwederMännercodeoderffmpegüber Befehle, aber ich kann die Zusammenführung nicht im Stapel durchführen. Die Art und Weise, wie die Videos sortiert werden, ist mir egal. Aber wenn man bedenkt, dass der Vorgang an Hunderten oder Tausenden von Videos durchgeführt werden würde, wäre es nicht sinnvoll, sie alle in separaten Ordnern zu haben, jeweils begleitet von dem „einzigartigen“ Intro-Clip. Ich denke, der logischste Weg wäre, die „Sammelvideos“ in einem Ordner zu speichern und den Intro-Clip im selben Ordner wie den Encoder oder Renderer.

Vielen Dank im Voraus für jede Hilfe oder Anleitung,

Antwort1

Nun, ich habe Videos angehängt, aber nie am Anfang. Sie können avidemux verwenden, um die Videos anzuhängen!

Ich bin nicht gut im JavaScripten, also entschuldigen Sie bitte, dass ich das nicht für Sie skripte. Es gibt ein Tutorial zum Skripten für Avidemux. Avidemux ist ein Open Source und kostenloser Videokonverter. Sie können Ihrem Audio/Video in Avidemux Effekte hinzufügen und es in mehreren Formaten speichern.

Dieses Skript ist ein Beispiel-Tutorial auf der hier angegebenen Seite: [::: Verknüpfung :::] und das Skript durchsucht einfach das Verzeichnis orgDir und entpackt alle AVI-Dateien. Die resultierende Datei wird im Verzeichnis destDir abgelegt (unter Verwendung der neuen API directorySearch).

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

und weitere Funktionen: laden, anhängen, speichern, saveDVD, saveOGM, clearSegments, addSegment, goToTime, forceUnpack, setContainer

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

Das Turotial-Skript, 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:

Antwort2

Vielen Dank für Ihren Vorschlag @user2377276. Ich weiß Ihre Mühe wirklich zu schätzen. Tatsächlich ist Ihr Workaround derjenige, der mich in die richtige Richtung führt. Naja, das hoffe ich zumindest, denn ich habe es bisher nicht geschafft. Bisher bin ich dem Zusammenführen am nächsten gekommen, indem ich verschiedene Variationen des folgenden Codes verwendet habe, der im selben Verzeichnis wie die verschiedenen Videos ausgeführt wurde. Die eindeutige anzuhängende Datei wurde im Stammverzeichnis abgelegt und ich habe C:/TEMP für die Ausgabe erstellt.

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

Alle Videos sind im FLV1-Format, haben aber eine leicht unterschiedliche Auflösung, sodass ich im Grunde nur Mist bekomme.

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

Ich bin ziemlich sicher, dass dies ohne Neucodierung möglich ist, da ich mehrere Programme getestet habe und keines davon neu codiert, sie erzwingen in einigen Fällen nur die Auflösung. Tatsächlich schien sich das Programm, das am besten funktionierte, die AIR-Anwendung Rich Flv zu sein, aber sie funktioniert nicht im Stapelbetrieb.

verwandte Informationen