I'm trying to concatenate several videos using FFmpeg with Nodejs. I'm receiving the "No such file or directory" error. The written code is:
const glob = require("glob"); //store all the filenames with path to the videos var inputVideos = glob.sync("/home/r/clips/*.mp4"); const output = "./output/output.mp4"; const util = require("util"); const exec = util.promisify(require("child_process").exec); async function concatVideos(inputVideos, outputVideoPath) { //imported to get the name of videofile easily var path = require("path"); //the next ffmpeger variable,will keep the lines //ffmpeg -i videofile1.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts intermediate_videofile1.ts //ffmpeg -i videofile2.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts intermediate2_videofile2.ts var ffmpeger = ""; ffmpeger = inputVideos .map( video => ` ffmpeg -i ${video} -c copy -bsf:v h264_mp4toannexb -f mpegts ./intermediate_${ path.parse(video).name }.ts` ) .join("\n"); //concatenator keeps the segment //"concat:intermediate_videofile1.ts|intermediate_videofile2.ts" var concatenator = '"concat:'; concatenator += inputVideos .map(video => `./intermediate_${path.parse(video).name}.ts`) .join("|") + '"'; await exec( ` ${ffmpeger} ffmpeg -i ${concatenator} -c copy -bsf:a aac_adtstoasc ${outputVideoPath}` ); } concatVideos(inputVideos, output); and the error is
concat:./intermediate_0.ts|./intermediate_1.ts|./intermediate_2.ts|./intermediate_3.ts|./intermediate_4.ts|./intermediate_5.ts|./intermediate_6.ts|./intermediate_diegoortiz1399.ts|./intermediate_dog.ts|./intermediate_dogstify.ts|./intermediate_dylan50568.ts|./intermediate_gabrieleecorrea.ts|./intermediate_golden_leo.ts|./intermediate_helenapatiih.ts|./intermediate_kaiobreno2.ts|./intermediate_khancorso.ts|./intermediate_kitakaze_s_lili.ts|./intermediate_oliver45743.ts|./intermediate_pinkie_pets.ts|./intermediate_shibakoma.ts|./intermediate_thepetcollective.ts|./intermediate_tod_the_foxx.ts|./intermediate_userpub3y9m7kb.ts|./intermediate_warriorbulldogs.ts: No such file or directory``` So the command line would be: ffmpeg -i videofile1.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts intermediate_videofile1.ts ffmpeg -i videofile2.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts intermediate_videofile2.ts ffmpeg -i "concat:intermediate_videofile1.ts|intermediate_videofile2.ts" -c copy -bsf:a aac_adtstoasc ./output/output.mp4
Could you help us? Many thanks. Truly.:>