Export video with 59,94 FPS


#1

Hello,

I have a source video file with 59,94006 FPS according to VLC Player or 60000/1001 fps as ffprobe shows it. I want to edit it and export it with exact the same frame rate to avoid any stutterings etc. So on the “Video” tab I enter 59,940 in the Frames/sec field, more digits cannot be entered. And I see that in the “Other” tab that the parameters
frame_rate_num=60000
frame_rate_den=1001
are added which looks pretty good.

But in the output video I get 59,941256 in VLC Player or 19001/317 fps as ffprobe show it. So what am I doing wrong to get the original 60000/1001 fps?

Thanks in advance,
Matthias


#2

You are using an old version. v18.10.08 is the latest:
image

After exporting ffprobe:

Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709/unknown/bt709), 1920x1080 [SAR 1:1 DAR 16:9], 53689 kb/s, 59.94 fps, 59.94 tbr, 60k tbn, 119.88 tbc (default)


#3

Hey! Thanks for your quick response, your support is really great. I downloaded the latest version and I can enter more digits in the targe frames/sec field. But the result is still the same it is 59,941256 fps in VLC Player and not 59,94006. With a simple ffprobe query without any paramters it shows 59,94 fps. But with this query to get the axeact framerate:

ffprobe.exe -v 0 -of csv=p=0 -select_streams 0 -show_entries stream=r_frame_rate INPUTFILEPATH

I get 19001/317 and not 60000/1001 how it should be.


#4

From the job XML of my test:

  <profile width="1920" height="1080" sample_aspect_den="1" frame_rate_den="1001" display_aspect_den="9" colorspace="709" sample_aspect_num="1" frame_rate_num="60000" display_aspect_num="16" progressive="1" description="automatic"/>
  <consumer threads="0" f="mp4" g="300" width="1920" aspect="1.77778" progressive="1" crf="21" preset="faster" ar="48000" vcodec="libx264" target="/Users/ddennedy/Movies/test.mp4" rescale="bilinear" height="1080" mlt_service="avformat" channels="2" deinterlace_method="yadif" acodec="aac" movflags="+faststart" bf="3" real_time="-4" top_field_first="2" ab="384k"/>

As you can see, only framerate of 60000/1001 is supplied. From Shotcut > Properties > More Info…, which uses ffprobe:

r_frame_rate=60000/1001
avg_frame_rate=60000/1001

I did not have a 59.94 clip on this laptop while out of town and used Settings > Video Mode > HD 1080p 59.94 fps to make a test. What does your job XML show for both profile and consumer?

If I make another testing using Automatic with 29.97 clip but enter into the Export panel 59.94006, then I still get the intended result:

  <profile width="1920" height="1080" sample_aspect_den="1" frame_rate_den="1001" display_aspect_den="1080" colorspace="709" sample_aspect_num="1" frame_rate_num="30000" display_aspect_num="1920" progressive="1" description="automatic"/>
  <consumer frame_rate_den="1001" threads="0" f="mp4" g="150" width="1920" frame_rate_num="60000" aspect="1.77778" progressive="1" crf="21" preset="faster" ar="48000" vcodec="libx264" target="/Users/ddennedy/Movies/test.mp4" rescale="bilinear" height="1080" mlt_service="avformat" channels="2" deinterlace_method="yadif" acodec="aac" movflags="+faststart" bf="3" real_time="-4" top_field_first="2" ab="384k"/>
...
r_frame_rate=60000/1001
avg_frame_rate=60000/1001

So, I do not know how to reproduce it, and you might have made an incorrect test, or you need to submit a patch.


#5

So this is the export XML:
<profile display_aspect_num="1920" frame_rate_num="60000" sample_aspect_den="1" height="1080" display_aspect_den="1080" width="1920" frame_rate_den="1001" progressive="1" sample_aspect_num="1" colorspace="709" description="automatic"/>

<consumer channels="2" threads="0" deinterlace_method="yadif" crf="16" real_time="-3" bf="2" aspect="1,77778" preset="fast" mlt_service="avformat" width="2048" vcodec="libx264" f="matroska" x264opts="aq-strength=1,00:colorprim=bt709:transfer=bt709:colormatrix=bt709:keyint=6000:min-keyint=60" top_field_first="0" g="13" target="E:/Lets Play/SpiderMan/2 Edited/05-06/59fpstest59.mkv" progressive="1" aq="11" ar="44100" height="1152" rescale="hyper" movflags="+faststart" acodec="vorbis"/>

And here the result from Shotcut > Properties > More Info… of the rendered video:
r_frame_rate=19001/317
avg_frame_rate=19001/317


#6

I reproduce it with f=matroska. It is my understanding that Matroska does not typically store the frame rate information for H.264, and tools gather it from the video codec timing. Here is a previous discussion about that matter:

Next, I used ffmpeg that comes with Shotcut to make a similar encoding, and it reports the same result:

$ ffmpeg -i GOPR0395.MP4 -t 10 -strict experimental -c:a vorbis -ar 4410 0 test.mkv
...
$ ffprobe -v 0 -of csv=p=0 -select_streams 0 -show_entries stream=r_frame_rate test.mkv
19001/317

#7

Indeed with mp4 container it’s ok. Thanks for clarification.