Multiplexen von Video und Audio mit FFMPEG aus Unterverzeichnissen mithilfe eines Windows-Batch-Skripts

688
DMtd

Ich versuche, ein Batch-Skript (Windows-basiert) herauszufinden, das es mir ermöglicht, einige .m2v- und .wav-Dateien zu multiplexen, die in einer Vielzahl von Unterverzeichnissen (innerhalb eines einzigen Hauptverzeichnisses) vorhanden sind. Sie müssen auch umgeschnitten und umcodiert werden, die Ausgabedateien müssen MXF sein und in einem anderen Ordner enden. Ich bin neu für Batch-Skripte, nicht so neu für FFMPEG-Befehle. Bisher konnte ich keine Batch-Skripts finden, die die Verwendung mehrerer Dateien zulassen, nur solche, die eine einzelne Datei konvertieren.

Nach langem Suchen ist das Nächste, was ich gesehen habe, das, was ich ohne Erfolg versucht habe. Seltsamerweise produzierte es einmal eine .mxf-Datei, obwohl 0KB, aber jedes Mal, da ich nichts bekomme.

for %%a in (".m2v") do ffmpeg -i "%%~na.wav" -i "%%~na.m2v" -acodec copy -vcodec copy "newfiles\%%~na.mxf". 

Ich bin mir nicht sicher, was in der Klammer, wo ich hingehe (".m2v"), stehen soll.

was stellt das dar?

1
Bitte beachten Sie, dass [SU] kein Skriptschreibservice ist. Wenn Sie uns sagen, was Sie bisher versucht haben (einschließlich der von Ihnen verwendeten Skripts) und wo Sie stecken bleiben, können wir versuchen, bei bestimmten Problemen zu helfen. Sie sollten auch [Wie kann ich eine gute Frage stellen?] (Http://superuser.com/help/how-to-ask) lesen. DavidPostill vor 7 Jahren 0
Nach langem Suchen ist das Nächste, was ich gesehen habe, das, was ich ohne Erfolg versucht habe. Seltsamerweise produzierte es einmal eine .mxf-Datei, obwohl 0KB, aber jedes Mal, da ich nichts bekomme. für %% a in ("* .m2v") do ffmpeg -i "%% ~ na.wav" -i "%% ~ na.m2v" -acodec copy -vcodec copy "neue Dateien \ %% ~ na.mxf" . Ich bin mir nicht sicher, was in der Klammer, wo ich hingehe ("* .m2v"), stehen soll. was stellt das dar? DMtd vor 7 Jahren 0

1 Antwort auf die Frage

1
DavidPostill

Ich bin nicht sicher, was in der Klammer, wo ich hingehe, gemeint ist (".m2v").

was stellt das dar?

for %%a in (".m2v") do ffmpeg -i "%%~na.wav" -i "%%~na.m2v" -acodec copy -vcodec copy "newfiles\%%~na.mxf" 

Der Wert (".m2v")stellt einen Satz von zu verarbeitenden Dateien dar.

In Ihrem Befehl gibt es keine zu verarbeitenden Dateien seit:

  • .m2v ist nur eine Erweiterung und wir können davon ausgehen, dass es so etwas sein sollte filename.m2v
  • Sie benötigen hier wirklich einen Platzhalterausdruck (siehe unten).
  • Ihre Dateien befinden sich in Unterverzeichnissen.

Verwenden Sie die folgende Batchdatei (im einzelnen Hauptverzeichnis):

@echo off setlocal for /f "usebackq" %%a in (`dir /b /s *.m2v`) do ( echo ffmpeg -i "%%~dpna.wav" -i "%%~dpna.m2v" -acodec copy -vcodec copy "newfiles\%%~na.mxf ) endlocal 

Anmerkungen:

  • Entfernen Sie die Option echoaus dem ffmpegBefehl, wenn Sie mit der Batchdatei zufrieden sind.

  • dir /b /s *.m2v wird verwendet, um eine Liste der zu verarbeitenden Dateien zu erstellen.

    Die /bOption gibt nur die Dateinamen an (wir möchten nicht die Header, die Zusammenfassung oder andere Details).

    Die /sOption erlaubt dirdie Bearbeitung von Unterverzeichnissen.

  • for /f wird verwendet, um die Liste der Dateien zu verarbeiten.

  • %%~dpna wird verwendet, um den vollständig qualifizierten Dateinamen ohne die Erweiterung abzurufen.


Lesen Sie weiter

  • Ein AZ-Index der Windows-CMD-Befehlszeile - Eine hervorragende Referenz für alles, was mit Windows-Cmd-Zeilen in Verbindung steht.
  • dir - Zeigt eine Liste von Dateien und Unterordnern an.
  • for / f - Schleifenbefehl gegen die Ergebnisse eines anderen Befehls.
  • parameters - Ein Befehlszeilenargument (oder Parameter) ist ein beliebiger Wert, der an ein Batch-Skript übergeben wird.