I have 2 video files that I want to concat using ffmpeg
initial.mp4 Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv), 720x720, 1077 kb/s, 15.98 fps, 16 tbr, 600 tbn, 1200 tbc (default)
ending.mp4 Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt470bg), 720x720 [SAR 1:1 DAR 1:1], 1287 kb/s, 25 fps, 25 tbr, 25k tbn, 50 tbc (default
video_instructions_with_ending.txt
file initial.mp4
file initial.mp4
file initial.mp4
file ending.mp4
FFmpeg command
ffmpeg -f concat -i video_instructions_with_ending.txt -c copy output.mp4 -y
output.mp4 Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv), 720x720, 27 kb/s, 0.43 fps, 48 tbr, 19200 tbn, 38400 tbc (default)
The output file is supposed to be 6 seconds. But the output file is 3min and 32 seconds.
Any help will be appreciated
For the files that I used, you can get it from:HERE
I tried the following command and it worked for me
ffmpeg -i initial.mp4 -i initial.mp4 -i initial.mp4 -i ending.mp4 -filter_complex concat=n=4:v=1:a=0 -f MOV output.mp4 -y
Explanation: FFmpeg has three concat methods
The 3rd options fits the scenario, as we need to re-encode the files.
Run this command on ending.mp4
and then concat with the new file:
ffmpeg -i ending.mp4 -c copy -video_track_timescale 600 newending.mp4
Long story short, timebases are different so the ending video is prolonged. See https://stackoverflow.com/a/43337235/5726027 for context on timestamps & bases.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With