如何使用FFmpeg将视频起始时间设置为0?
如何使用FFmpeg将视频起始时间设置为0?
看起来你遇到了自定义PTS后视频起始时间不为0的问题,我来帮你梳理下解决思路~
你提到用FFmpeg给MP4设置了自定义PTS,但通过ffprobe检测到输出视频的信息是:
Duration: 00:00:05.00, start: 0.033008, bitrate: 2638 kb/s
起始时间不是预期的0,对吧?
从你补充的命令来看,问题根源已经被你找到了——你在setpts滤镜里错误地把帧ID从-1开始计算了,这直接导致第一帧的PTS值大于0,最终让视频的起始时间产生了偏移。
要解决这个问题,只需要调整setpts滤镜里的帧ID起始逻辑,去掉针对N=-1的判断,直接从第0帧(视频的第一帧)开始定义对应的PTS值就可以了。
修正后的命令示例如下:
ffmpeg -y -i input.mp4 -filter_complex "[v]setpts='(330*eq(N,0)+191*eq(N,1)+211*eq(N,2)+...)'[out]" -map [out] out_video.mp4
简单解释下:这里移除了原命令中0*eq(N,-1)+这部分无效逻辑,直接从第一帧(N=0)开始设置对应的PTS值,这样第一帧的PTS就会是你期望的起始值,最终视频的起始时间就会变成0。
处理完成后,你再用ffprobe检查输出视频,就能看到start: 0.000000的结果,说明设置成功啦。
备注:内容来源于stack exchange,提问作者legeba
相关产品推荐
相关产品推荐

