0

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

3

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Browse other questions tagged or ask your own question.