André Hänsel
2018-05-23 13:39:00 UTC
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
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-***@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-user
To unsubscribe, visit link above, or email
ffmpeg-user-reques
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
Chooses between 1 and 2 depending on muxer capabilities.
So first question: Is there a reason why the mp4 muxer cannot choose vsync2?
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-***@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-user
To unsubscribe, visit link above, or email
ffmpeg-user-reques