ffmpeg流复制输出错误的帧速率



运行以下命令时,out.mp4的帧速率为30.10,即使video.mp4是30.00。我注意到out.mp4的持续时间应该是00:00:06.39,而不是00:00:06.38。我还看到,在out.mp4的ffprobe输出中,"start"参数是0.020000,而它应该(也许(是0.000000,我如何解决这个问题?我认为这种差异可能是由于我剪切的帧不是关键帧,但我真的不确定发生了什么:\

ffmpeg -i video.mp4 -ss 22 -c copy out.mp4

ffprobe用于视频.mp4

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'video.mp4':
Metadata:
major_brand     : isom
minor_version   : 512
compatible_brands: isomiso2mp41
encoder         : Lavf59.20.100
Duration: 00:00:28.39, start: 0.000000, bitrate: 2231 kb/s
Stream #0:0[0x1](und): Video: hevc (Main) (hev1 / 0x31766568), yuv420p(tv, bt709, progressive), 1920x1080 [SAR 1:1 DAR 16:9], 2100 kb/s, 30 fps, 30 tbr, 15360 tbn (default)
Metadata:
handler_name    : VideoHandler
vendor_id       : [0][0][0][0]
Stream #0:1[0x2](und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 125 kb/s (default)
Metadata:
handler_name    : SoundHandler
vendor_id       : [0][0][0][0]

用于out.mp4 的ffprobe

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'out.mp4':
Metadata:
major_brand     : isom
minor_version   : 512
compatible_brands: isomiso2mp41
encoder         : Lavf59.20.100
Duration: 00:00:06.38, start: 0.020000, bitrate: 2307 kb/s
Stream #0:0[0x1](und): Video: hevc (Main) (hev1 / 0x31766568), yuv420p(tv, bt709, progressive), 1920x1080 [SAR 1:1 DAR 16:9], 2254 kb/s, 30.10 fps, 30 tbr, 15360 tbn (default)
Metadata:
handler_name    : VideoHandler
vendor_id       : [0][0][0][0]
Stream #0:1[0x2](und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 127 kb/s (default)
Metadata:
handler_name    : SoundHandler
vendor_id       : [0][0][0][0]

我没有一个明确的答案,但如果你想调整你的开始时间在一个关键帧上,你可以运行以下ffprobe命令来确定最近的关键帧在哪里:

ffprobe -show_frames -show_entries frame=key_frame,pkt_pts_time -read_intervals 21%22 video.mp4

我已经指定了21秒到22秒之间的时间间隔作为首发,但根据你的喜好进行设置。如果帧是关键帧,则其key_frame条目为1。使用该时间戳,看看问题是否消失。

最新更新