I was re-encoding a video with: ffmpeg -i in.mp4 -c:v libx264 -movflags faststart -crf 30 out.mp4 and surprisingly the output file was much larger (9 MB) than the input file (3 MB). I examined the files with: ffprobe -show_entries frame=pict_type,pkt_size -of csv in.mp4 and I noticed that the output file just had many more frames. This is confirmed by the fact that it says "dup=140" in the encoding log.
So I checked the presentation timestamps (pkt_pts_time) in the output file. Input: frame,0,0.000000,I frame,675,0.038775,P frame,1289,0.074046,P frame,1941,0.111500,P frame,4624,0.265625,P frame,5341,0.306813,P ... Output: frame,0,0.000000,I frame,1024,0.058824,P frame,2048,0.117647,P frame,3072,0.176471,B frame,4096,0.235294,P frame,5120,0.294118,P ... As you can see, they are completely off. I added -vsync 2 to the command line options and I got a file that has roughly the same number of frames as the input. I think this would make much more sense as a default. The documentation says about the default for vsync: > Chooses between 1 and 2 depending on muxer capabilities. So first question: Is there a reason why the mp4 muxer cannot choose vsync 2? However, even with vsync 2 the timestamps were still slightly off, in fact they looked somehow quantized: frame,0,0.000000,I frame,1024,0.058824,P frame,2048,0.117647,P frame,3072,0.176471,P frame,5120,0.294118,P frame,6144,0.352941,P ... I was finally able to fix this with -enc_time_base -1. So same question: Any reason to not have this as the default? By the way, I tried one more thing. I thought maybe it will choose vsync 2 automatically *if* enc_time_base is -1 (because otherwise it works with timestamps quantized to some arbitrary constant frame rate anyway and the value of vsync doesn't matter much). So I tried *only* giving -enc_time_base -1 and no -vsync. This led to: [mp4 @ 0000000003ecd040] Frame rate very high for a muxer not efficiently supporting it. Please consider specifying a lower framerate, a different muxer or -vsync 2 More than 1000 frames duplicated Thank you FFmpeg, I will consider it. Why not make it the default. :) _______________________________________________ ffmpeg-user mailing list ffmpeg-user@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-user To unsubscribe, visit link above, or email ffmpeg-user-requ...@ffmpeg.org with subject "unsubscribe".