VLC录制4K RTSP流出现时长显示错误、FPS异常问题求助
问题修复方案
问题根源
这是VLC录制RTSP流时的典型容器元数据损坏故障:录制过程中网络波动或VLC写入异常导致MP4头的时长、帧率、时间戳信息全部出错,但实际视频帧数据是完整的,所以才会出现文件体积匹配1小时录制、进度条走完仍可播放的情况。
修复步骤
方案一:直接生成正确时间戳(无重编码,速度快)
执行以下命令即可:
ffmpeg -fflags +genpts -r 30 -i <INPUT.mp4> -c:v copy fixed_output.mp4
参数说明:
-fflags +genpts强制忽略原有损坏的时间戳信息,根据帧序列重新生成正确的演示时间戳-r 30强制指定输入实际帧率为30FPS,覆盖原有错误的213FPS元数据-c:v copy直接复制H264视频流,无画质损失,处理速度仅取决于硬盘读写速度
方案二:提取裸流重新封装(适用于头损坏极严重的场景)
如果方案一仍无法读取全部帧,先提取裸H264流再封装:
- 提取裸H264流:
ffmpeg -i <INPUT.mp4> -c:v copy -bsf:v h264_mp4toannexb raw.h264
- 重新封装为正常MP4文件:
ffmpeg -r 30 -i raw.h264 -c:v copy final_fixed.mp4
结果验证
修复完成后执行ffprobe final_fixed.mp4查看元数据,时长会显示为接近1小时,帧率也会正确显示为30FPS,进度条和播放时长完全匹配。
如果原录制文件包含音频,在命令中补充-c:a copy参数即可同步修复音频流。
内容的提问来源于stack exchange,提问作者WhaSukGO
相关产品推荐
相关产品推荐

