I have a video that was rendered as 26.51 fps h.264 into an mkv by my video editor. Calling the file up in ffmpeg it displayed this file as 1k fps, 26.51 tbr.
When I applied an operation to separate a 1 minute segment of this video into its own video I used
ffmpeg -ss 00:00:00 -i input.mkv -to 00:01:00 -c copy output.mkv
Calling the output up in ffmpeg showed this video as 27.4 fps, 26.51 tbr.
I then changed the container of this short 1 minute section in two independent operations:
ffmpeg -i input.mkv output.mkv
Displayed the fps as: 26.51fps, 26.51 tbr
ffmpeg -i input.mkv -c copy output.mkv
Displayed the fps as: 27.4fps, 27.4 tbr
I'm very confused, what exactly is going on here? I wanted all my videos fps to be 26.51fps. What do I go about doing to prevent this from happening in the future?
"tbr = tbr is guessed from the video stream and is the value users want to see when they look for the video frame rate"
So my understanding from that definition is in the first video I "wanted to see" 26.51fps instead of 1k fps. Which is true. So something *first went wrong at this point that I need to fix?
Then from the second video I wanted to see 26.51fps instead of 27.4fps? Which is true.
Then from the third video my tbr and fps matched at 26.51. Wonderful!
The fourth video the fps and tbr matched at 27.4fps but I didn't want 27.4fps
And with the -c copy command above I'm guessing it forced the 27.4 fps value onto the video and that's why it became the new tbr and fps values. But this doesn't explain how in the top command where I yielded out my 1 minute partition of the original video, which also used -c copy, that it created a new fps value rather than use the 1k fps value of the original.
Edit: I see you can force the fps with -r 26.51; but this is requiring a re-encode, which I need to avoid. Is there something else I can do at one of the steps? I already rendered it with 26.51 as my fps to begin with afterall.