运行以下命令时,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
。使用该时间戳,看看问题是否消失。