FFmpeg-Batch-Zusammenführen von Videos in einem Ordner

0

Ich habe einen Ordner c:\myfolder\ mit einem Variable Menge von mp4 Dateien mit gleicher Auflösung / Codec.

Jetzt brauche ich eine .bat-Datei, um alle Videos zu einem zusammenzuführen.

z.B. c:\myfolder\1.mp4, c:\myfolder\2.mp4, c:\myfolder\3.mp4 in c:\myfolder\output.mp4

Ich habe einen Weg gefunden, dies zu tun, indem ich ein .txt Datei zuerst, die alle eingegebenen Videos enthält und in einem anderen Schritt zu tun

ffmpeg.exe -f concat -i mylist.txt -c copy output.mp4

Frage: Gibt es eine Möglichkeit, dies in einem Schritt zu tun?

Dr. Snail
quelle
Eine Batch-Datei könnte das erzeugen .cue Datei für Sie, aber ich sehe ein Sortierproblem, wenn es mehr als 9 Dateien als 10.mp4 gibt, wird 1.mp4 folgen, es sei denn, Sie verwenden eine Zählung for /l um die Liste zu erstellen.
LotPings
@LotPings Es gibt kein Sortierproblem, da die Dateien sortierbare Zeitstempel haben.
Dr. Snail

Antworten:

0

Da ich kein ffmpeg auf diesem PC installiert habe, ungetestet:

:: Q:\Test\2018\06\20\SU_1332169.cmd
@Echo off
Set "BaseDir=c:\myfolder"
Set "OutMp4=%BaseDir%\Output.mp4"
Set "FfmpegCue=%Temp%\Ffmpeg.Cue"

:: gather files but exclude evt. present output file
( For /f "Delims=" %%A in (
  'Dir /B/S/A-D/ON "%BaseDir%\*.mp4" 2^>NUL ^|findstr /VLI "%OutMp4%" '
  ) Do Echo=%%A
) > "%FfmpegCue%"

:: Just to show what's in the cue file:
more "%FfmpegCue%"
Pause

:: Do the concat
ffmpeg.exe -f concat -i "%FfmpegCue%" -c copy "%OutMp4%" && (
  Echo Successfully created "%OutMp4%"
  choice /M "Delete %FfmegCue% "
  If not Errorlevel 2 Del "%FfmegCue%"
) || (echo ffmpeg exited with error)
LotPings
quelle