Your source file reported: [Christopher Smith]"22.58 fps, 23.98 tbr, 2997 tbn, 5994 tbc"
Is this 24 fps material in a ntsc stream using 3:2 pulldown?
tbn, tbc & tbr all refer to the timebase. (AVStream, AVCodecContext, assumed). This can differ between container, codec and assumed rate. (due to some containers being able to hold both interlaced and non-interlaced material, the time base can be double the required frame rate and these warnings are normal in that case.) fps refers to the frame rate but I find this can be inaccurate.
IMHO, tbr is the most trustworthy.
For example, if I do a header read of one of my test animation files I get: Seems stream 0 codec frame rate differs from container frame rate: 600.00 (600/1) -> 25.00 (25/1)
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'fluid8.mov':
major_brand : qt
minor_version : 537199360
Duration: 00:00:08.64, start: 0.000000, bitrate: 68055 kb/s
Stream #0.0(eng): Video: qtrle, rgb24, 1024x576, 68053 kb/s, 24.65 fps, 25 tbr, 600 tbn, 600 tbc
This is a .mov container holding video in the animation codec at 25 frames per second (I know this because I made it ;-). In this example, you can see that tbr is the only correct one and that would also be the correct choice for -r if I wanted to force the frame rate. You can always just exclude the -r flag and the frame rates will pass from source to destination.
Finally, be careful of rounding errors using 23.98. (It is actually 23.976 which is 30/1.001/1.25)
p.s. Please always post full command lines.
"half-way to world domination A.K.A. the belligerent blue bike shed"