-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathconcatenateAudioV2.js
51 lines (42 loc) · 1.78 KB
/
concatenateAudioV2.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
const path = require('path');
const fs = require('fs');
const ffmpeg = require('fluent-ffmpeg');
// Get the current date and format it as 'DD.MM.YYYY'
const currentDate = new Date().toLocaleDateString('en-GB').replace(/\//g, '.');
// Create the finalAudioFiles directory if it doesn't exist
const finalAudioFilesDir = path.join(__dirname, 'finalAudioFiles', currentDate + '-fAF');
if (!fs.existsSync(finalAudioFilesDir)) {
fs.mkdirSync(finalAudioFilesDir);
}
const introFileDir = path.join(__dirname, 'soundEffects', 'intorForJokes');
const mainFileDir = path.join(__dirname, 'audioFiles', currentDate + '-wav');
// Use fluent-ffmpeg to concatenate the intro file with each file in mainFileDir
fs.readdir(mainFileDir, function(err, mainFiles) {
if (err) {
console.log(err);
return;
}
mainFiles.forEach((mainFile) => {
const mainFilePath = path.join(mainFileDir, mainFile);
const outputFilePath = path.join(finalAudioFilesDir, `${mainFile.replace('.mp3', '')}-concatenated.mp3`);
// Use the fs module to read the contents of the introFile directory and choose a random mp3 file
fs.readdir(introFileDir, function(err, introFiles) {
if (err) {
console.log(err);
return;
}
const randomIndex = Math.floor(Math.random() * introFiles.length);
const introFilePath = path.join(introFileDir, introFiles[randomIndex]);
ffmpeg()
.input(introFilePath)
.input(mainFilePath)
.on('error', function(err) {
console.log('An error occurred: ' + err.message);
})
.on('end', function() {
console.log(`Concatenation of ${introFilePath} and ${mainFilePath} finished! Output file saved as ${outputFilePath}.`);
})
.mergeToFile(outputFilePath, finalAudioFilesDir);
});
});
});