I have two videos, and I need to drop both ends for both videos and leave only middle part, and then concatenate middle parts together. Both videos are exactly the same origin - same FPS and same codec.
What I am trying to do:
ffmpeg -i 0.mp4 -c:v h264_nvenc -preset fast -rc vbr -qmin 1 -qmax 1 -filter_complex "[0:v]trim=start=01.00:duration=03.00,setpts=PTS-STARTPTS[vmiddle]" -map [vmiddle] middle_0.mp4
ffmpeg -i 1.mp4 -c:v h264_nvenc -preset fast -rc vbr -qmin 1 -qmax 1 -filter_complex "[0:v]trim=start=01.00:duration=03.00,setpts=PTS-STARTPTS[vmiddle]" -map [vmiddle] middle_1.mp4
These two commands cut only middle part from each video, starting at 01.00 and ending at 04.00.
Then I concatenate videos:
ffmpeg -y -f concat -i concat.txt -c copy concat.mp4
With concat.txt file obviously containing:
file 'middle0.mp4'
file 'middle1.mp4'
But this does not work. The output video concat.mp4
contains weird glitches and I get a lot of errors in console:
[mov,mp4,m4a,3gp,3g2,mj2 @ 00000000025ead60] Auto-inserting h264_mp4toannexb bitstream filter
[concat @ 0000000000dd6bc0] DTS 34666 < 45568 out of order
[mp4 @ 0000000000ddbfe0] Non-monotonous DTS in output stream 0:0; previous: 45568, current: 34666; changing to 45569. This may result in incorrect timestamps in the output file.
[mp4 @ 0000000000ddbfe0] Non-monotonous DTS in output stream 0:0; previous: 45569, current: 35050; changing to 45570. This may result in incorrect timestamps in the output file.
[mp4 @ 0000000000ddbfe0] Non-monotonous DTS in output stream 0:0; previous: 45570, current: 35434; changing to 45571. This may result in incorrect timestamps in the output file.
[mp4 @ 0000000000ddbfe0] Non-monotonous DTS in output stream 0:0; previous: 45571, current: 35818; changing to 45572. This may result in incorrect timestamps in the output file.
[mp4 @ 0000000000ddbfe0] Non-monotonous DTS in output stream 0:0; previous: 45572, current: 36202; changing to 45573. This may result in incorrect timestamps in the output file.
[mp4 @ 0000000000ddbfe0] Non-monotonous DTS in output stream 0:0; previous: 45573, current: 36586; changing to 45574. This may result in incorrect timestamps in the output file.
[mp4 @ 0000000000ddbfe0] Non-monotonous DTS in output stream 0:0; previous: 45574, current: 36970; changing to 45575. This may result in incorrect timestamps in the output file.
[mp4 @ 0000000000ddbfe0] Non-monotonous DTS in output stream 0:0; previous: 45575, current: 37354; changing to 45576. This may result in incorrect timestamps in the output file.
[mp4 @ 0000000000ddbfe0] Non-monotonous DTS in output stream 0:0; previous: 45576, current: 37738; changing to 45577. This may result in incorrect timestamps in the output file.
[mp4 @ 0000000000ddbfe0] Non-monotonous DTS in output stream 0:0; previous: 45577, current: 38122; changing to 45578. This may result in incorrect timestamps in the output file.
[mp4 @ 0000000000ddbfe0] Non-monotonous DTS in output stream 0:0; previous: 45578, current: 38506; changing to 45579. This may result in incorrect timestamps in the output file.
[mp4 @ 0000000000ddbfe0] Non-monotonous DTS in output stream 0:0; previous: 45579, current: 38890; changing to 45580. This may result in incorrect timestamps in the output file.
[mp4 @ 0000000000ddbfe0] Non-monotonous DTS in output stream 0:0; previous: 45580, current: 39274; changing to 45581. This may result in incorrect timestamps in the output file.
[mp4 @ 0000000000ddbfe0] Non-monotonous DTS in output stream 0:0; previous: 45581, current: 39658; changing to 45582. This may result in incorrect timestamps in the output file.
[mp4 @ 0000000000ddbfe0] Non-monotonous DTS in output stream 0:0; previous: 45582, current: 40042; changing to 45583. This may result in incorrect timestamps in the output file.
[mp4 @ 0000000000ddbfe0] Non-monotonous DTS in output stream 0:0; previous: 45583, current: 40426; changing to 45584. This may result in incorrect timestamps in the output file.
[mp4 @ 0000000000ddbfe0] Non-monotonous DTS in output stream 0:0; previous: 45584, current: 40810; changing to 45585. This may result in incorrect timestamps in the output file.
[mp4 @ 0000000000ddbfe0] Non-monotonous DTS in output stream 0:0; previous: 45585, current: 41194; changing to 45586. This may result in incorrect timestamps in the output file.
[mp4 @ 0000000000ddbfe0] Non-monotonous DTS in output stream 0:0; previous: 45586, current: 41578; changing to 45587. This may result in incorrect timestamps in the output file.
[mp4 @ 0000000000ddbfe0] Non-monotonous DTS in output stream 0:0; previous: 45587, current: 41962; changing to 45588. This may result in incorrect timestamps in the output file.
[mp4 @ 0000000000ddbfe0] Non-monotonous DTS in output stream 0:0; previous: 45588, current: 42346; changing to 45589. This may result in incorrect timestamps in the output file.
[mp4 @ 0000000000ddbfe0] Non-monotonous DTS in output stream 0:0; previous: 45589, current: 42730; changing to 45590. This may result in incorrect timestamps in the output file.
[mp4 @ 0000000000ddbfe0] Non-monotonous DTS in output stream 0:0; previous: 45590, current: 43114; changing to 45591. This may result in incorrect timestamps in the output file.
[mp4 @ 0000000000ddbfe0] Non-monotonous DTS in output stream 0:0; previous: 45591, current: 43498; changing to 45592. This may result in incorrect timestamps in the output file.
[mp4 @ 0000000000ddbfe0] Non-monotonous DTS in output stream 0:0; previous: 45592, current: 43882; changing to 45593. This may result in incorrect timestamps in the output file.
[mp4 @ 0000000000ddbfe0] Non-monotonous DTS in output stream 0:0; previous: 45593, current: 44266; changing to 45594. This may result in incorrect timestamps in the output file.
[mp4 @ 0000000000ddbfe0] Non-monotonous DTS in output stream 0:0; previous: 45594, current: 44650; changing to 45595. This may result in incorrect timestamps in the output file.
[mp4 @ 0000000000ddbfe0] Non-monotonous DTS in output stream 0:0; previous: 45595, current: 45034; changing to 45596. This may result in incorrect timestamps in the output file.
[mp4 @ 0000000000ddbfe0] Non-monotonous DTS in output stream 0:0; previous: 45596, current: 45418; changing to 45597. This may result in incorrect timestamps in the output file.
Note, I am already setting presentation timestamp with setpts=PTS-STARTPTS
so each video starts at 00.00. But how to fix this non-monotonous DTS? I am really stuck, please help.
I know that I could fix this with re-encoding video during concatenation, but I really can't afford this. This step is a part of long pipeline and time is crucial, I have to do it with copy codec.
Added:
Requested ffprobe
output for both videos. I know little about ffprobe
output, could you please explain what's going on and why is there a discrepancy and what does it mean? (512 steps in 1st video and 384 steps in 2nd video)
ffprobe -show_streams -show_entries packet=pts -of compact=p=0:nk=1 video.mp4 > video.txt
for both files and link them here.