Tengo un archivo de video principal y una cantidad dinámica de archivos de video más pequeños que deben superponerse en momentos específicos según las marcas de tiempo.
Pude hacer que el video se superpusiera en los lugares correctos, pero ahora no tengo audio. (Nota: solo necesito el audio de la primera entrada ya que los videos superpuestos no tienen audio)
Creo que es un problema con mi sintaxis en torno a las entradas, pero no puedo resolverlo. Cualquier ayuda es apreciada.
Aquí está mi código:
const mergedVideo = ffmpeg("/tmp/orignal.mp4"); screenShareFileNames.forEach((fileName) => mergedVideo.addInput(fileName)); const filters = screenShareFileNames.map((fileName, index) => { const inputs = index === 0 ? "[0:v][1:v]" : `[tmp][${index + 1}:v]`; const outputs = `tmp`; return { filter: "overlay", options: { enable: `between(t,${insertPoint},${insertPoint + 5})` }, inputs, outputs, }; }); mergedVideo .complexFilter(filters, "tmp") .save("/tmp/final.mp4");Parece que necesitaba agregar una opción de salida que mapeaba el audio del video original.
mergedVideo .complexFilter(filters, "tmp") .outputOptions(["-map 0:a"]) .output("/tmp/final.mp4") .run();