Spaces:
Running
Running
Commit
·
dba0530
1
Parent(s):
92f01c7
Add music
Browse files- server-plugins/flatten-paths.js +4 -0
- utils/CaptionRender.js +12 -2
server-plugins/flatten-paths.js
CHANGED
|
@@ -7,6 +7,10 @@ export class FlattenPathsPlugin extends Plugin {
|
|
| 7 |
}
|
| 8 |
async applyPrerender(originalManuscript, jobId) {
|
| 9 |
let transcript = originalManuscript.transcript
|
|
|
|
|
|
|
|
|
|
|
|
|
| 10 |
for (let item of transcript) {
|
| 11 |
if (item.mediaAbsPaths && item.mediaAbsPaths.length > 0) {
|
| 12 |
item.mediaAbsPaths = item.mediaAbsPaths.map((mediaObj) => {
|
|
|
|
| 7 |
}
|
| 8 |
async applyPrerender(originalManuscript, jobId) {
|
| 9 |
let transcript = originalManuscript.transcript
|
| 10 |
+
|
| 11 |
+
if (originalManuscript.bgMusic) {
|
| 12 |
+
originalManuscript.bgMusic = path.join('public', path.basename(originalManuscript.bgMusic));
|
| 13 |
+
}
|
| 14 |
for (let item of transcript) {
|
| 15 |
if (item.mediaAbsPaths && item.mediaAbsPaths.length > 0) {
|
| 16 |
item.mediaAbsPaths = item.mediaAbsPaths.map((mediaObj) => {
|
utils/CaptionRender.js
CHANGED
|
@@ -103,12 +103,22 @@ export class CaptionRenderer {
|
|
| 103 |
filterComplex += `;[vout0]copy[finalv];[aout0]copy[finala]`;
|
| 104 |
}
|
| 105 |
|
| 106 |
-
//
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 107 |
await this.runFFmpeg([
|
| 108 |
...inputs,
|
| 109 |
'-filter_complex', filterComplex,
|
| 110 |
'-map', '[finalv]',
|
| 111 |
-
'-map', '[finala]',
|
| 112 |
'-c:v', 'libx264',
|
| 113 |
'-c:a', 'aac',
|
| 114 |
'-y',
|
|
|
|
| 103 |
filterComplex += `;[vout0]copy[finalv];[aout0]copy[finala]`;
|
| 104 |
}
|
| 105 |
|
| 106 |
+
// Add background music if present
|
| 107 |
+
const { bgMusic, bgMusicVolume = 0.25, bgMusicDuration = 3 * 60 } = originalManuscript;
|
| 108 |
+
let bgMusicInputIndex = null;
|
| 109 |
+
if (bgMusic) {
|
| 110 |
+
inputs.push('-i', bgMusic);
|
| 111 |
+
bgMusicInputIndex = inputIndex;
|
| 112 |
+
inputIndex++;
|
| 113 |
+
// Mix bgMusic with finala
|
| 114 |
+
filterComplex += `;[${bgMusicInputIndex}:a]volume=${bgMusicVolume}[bgmvol];[finala][bgmvol]amix=inputs=2:duration=first:dropout_transition=2[mixeda]`;
|
| 115 |
+
}
|
| 116 |
+
|
| 117 |
await this.runFFmpeg([
|
| 118 |
...inputs,
|
| 119 |
'-filter_complex', filterComplex,
|
| 120 |
'-map', '[finalv]',
|
| 121 |
+
'-map', bgMusic ? '[mixeda]' : '[finala]',
|
| 122 |
'-c:v', 'libx264',
|
| 123 |
'-c:a', 'aac',
|
| 124 |
'-y',
|