This code compose 3 mp4 into 1 with ffmepg, it works, but there is no animation:
ffmpeg()
.input(`./media/001.mp4`)
.inputFormat('mp4')
.input(`/tmp/looped_video.mp4`)
.inputFormat('mp4')
.input(`./media/003.mp4`)
.inputFormat('mp4')
.noAudio()
.videoCodec('libx264')
.format('mp4')
.complexFilter([
'[0]pad=1080:1080:-1:-1,setsar=1,fps=30,format=yuv420p[v0]',
'[1]pad=1080:1080:-1:-1,setsar=1,fps=30,format=yuv420p[v1]',
`[2]pad=1080:1080:-1:-1,setsar=1,fps=30,format=yuv420p[v2]`,
`[v0][v1][v2]concat=n=3:v=1:a=0`,
])
.outputOptions([
'-tune animation',
'-loop 1',
'-profile:v baseline',
'-level 3.0',
'-preset medium',
'-threads 4',
])
.output(`/tmp/output.mp4`)
.on('end', () => {
console.log('MP4 video generated')
const endTime = Date.now()
console.log(
`FFmpeg took ${endTime - startTime} milliseconds to render.`
)
})
.on('error', (e) => {
console.log(e)
})
.run()
I tried adding animation like this
ffmpeg()
.input(`./media/001.mp4`)
.inputFormat('mp4')
.input(`/tmp/looped_video.mp4`)
.inputFormat('mp4')
.input(`./media/003.mp4`)
.inputFormat('mp4')
.noAudio()
.videoCodec('libx264')
.format('mp4')
.complexFilter([
'[0]pad=1080:1080:-1:-1,setsar=1,fps=30,format=yuv420p[v0]',
'[1]pad=1080:1080:-1:-1,setsar=1,fps=30,format=yuv420p[v1]',
`[2]pad=1080:1080:-1:-1,setsar=1,fps=30,format=yuv420p[v2]`,
'[0:v][1:v]crossfade=duration=1[faded]',
`[faded][v2]concat=n=3:v=1:a=0`,
])
.outputOptions([
'-tune animation',
'-loop 1',
'-profile:v baseline',
'-level 3.0',
'-preset medium',
'-threads 4',
'-map [faded]',
])
.output(`/tmp/output.mp4`)
.on('end', () => {
console.log('MP4 video generated')
const endTime = Date.now()
console.log(
`FFmpeg took ${endTime - startTime} milliseconds to render.`
)
})
.on('error', (e) => {
console.log(e)
})
.run()
but it raise an error:
yarn run dev
yarn run v1.22.19
$ ts-node index.ts
MP4 video generated
FFmpeg took 2063 milliseconds to render.
Error: ffmpeg exited with code 1: Error initializing complex filters.
Invalid argument
at ChildProcess.<anonymous> (/Users/janoskukoda/Workspace/test/node_modules/fluent-ffmpeg/lib/processor.js:182:22)
I tried xfade
filter also, but raise an error:
.complexFilter([
'[0:v]pad=1080:1080:-1:-1,setsar=1,fps=30,format=yuv420p[v0]',
'[1:v]pad=1080:1080:-1:-1,setsar=1,fps=30,format=yuv420p[v1]',
`[2:v]pad=1080:1080:-1:-1,setsar=1,fps=30,format=yuv420p[v2]`,
`[v0][v1]xfade=duration=1:offset=3:crossfade=1[xf0]`,
`[xf0][v2]xfade=duration=1:offset=3:crossfade=1[out]`,
])
Error: ffmpeg exited with code 1: Error initializing complex filters. Option not found
xfade
filter also, but raise an error, would you look at my post?