我有一个视频文件,有一个fps为30,但视频播放器(例如,VLC)读取fps为25 (我不知道为什么!)这会导致实际视频持续时间与视频播放器显示的内容不匹配。例如,在开始的顶部中心显示的视频时间戳和结束帧之间的时间差(参见附加的图像)是12分钟36秒,但是视频播放器显示的视频持续时间是15分钟7秒(见这两幅图像中的右下角)。我认为视频播放器正在将最初的视频持续时间乘以1.2 (30/25)。
我尝试使用ffmpeg将fps更改为30,使用:
ffmpeg -i input.mp4 -filter:v fps=30 output.mp4但ffmpeg 关于改变帧速率的文件表示,“视频的输出持续时间将保持不变。”
需要在代码中进行哪些更改,以便播放机中显示的视频持续时间与实际的视频持续时间相匹配?
起始框架:

端框:

发布于 2022-03-20 20:57:41
如果问题是不正确的框架(25 fps)存储在文件中(vlc报告了文件告诉它的内容),您可以尝试:
ffmpeg -r 30 -i input.mp4 [-c copy] output.mp4-r 30输入选项将重写文件指定的框架。-c copy (没有括号),看看是否可以复制编码的数据。如果它不能工作,删除它并重新编码视频流。https://stackoverflow.com/questions/71549570
复制相似问题