I know that original question is about Python, but Google have brought me here, when I asked about.. actually I don't remember exact query.
First, file should have following format:
file 'filename1.mp4'
file 'filename2.mp4'
file 'filename3.mp4'
and so on.
And next, solution in Java (Mac):
public static void joinVideos(String folderPath) throws Exception {
File folderFile = new File(folderPath);
//File[] files = folderFile.listFiles();
//On Mac filter out .DS_Store
File[] files = folderFile.listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
return !name.equals(".DS_Store");
}
});
StringBuilder fileListBuilder = new StringBuilder();
for (File file : files) {
fileListBuilder.append("file '").append(file.getName()).append("'\n");
}
ReadWriteUtil.writeTxt(fileListBuilder.toString(), folderPath + File.separator + "list.txt");
ProcessBuilder processBuilder = new ProcessBuilder("/usr/local/bin/ffmpeg", "-f", "concat", "-i", "list.txt", "-c", "copy", "output.mp4");
File errorFile = new File(folderPath + File.separator + "error.txt");
processBuilder.redirectError(errorFile);
Process process = processBuilder.directory(new File(folderPath)).start();
int exitCode = process.waitFor();
String error = ReadWriteUtil.readFileAsString(errorFile);
System.out.println("error: " + error);
System.out.println("VideoJoiner Finished with exit code: " + exitCode);
System.out.println("videos joined");
}