You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

提取HEVC视频至.h265/.hevc格式时帧率异常升高导致视频时长缩短的问题求助

提取HEVC视频至.h265/.hevc格式时帧率异常升高导致视频时长缩短的问题求助

最近我在从MP4文件里提取HEVC视频轨道时碰到了个头疼的问题,想请大家帮忙看看怎么解决。

先给大家看下原MP4文件里视频轨道的元数据:

Stream #0:0[0x1](und): Video: hevc (Main 10) (hev1 / 0x31766568), yuv420p10le(pc, progressive), 3832x1600 [SAR 1:1 DAR 479:200], 29891 kb/s, 23.98 fps, 23.98 tbr, 24k tbn (default)

Metadata:
handler_name    : VideoHandler
vendor_id       : [0][0][0][0]

Side data:
DOVI configuration record: version: 1.0, profile: 5, level: 6, rpu flag: 1, el flag: 0, bl flag: 1, compatibility id: 0

我用这条ffmpeg命令提取视频轨道:

ffmpeg -i myfile.mp4 -c copy onlyvideo.h265

结果提取后的.h265文件元数据变成了这样:

Stream #0:0: Video: hevc (Main 10), yuv420p10le(pc), 3832x1600 [SAR 1:1 DAR 479:200], 25 fps, 25 tbr, 1200k tbn

帧率从23.98变成了25,直接导致提取后的视频时长比原文件短了一截。

这个问题只有在我把视频存为.h265或者.hevc格式时才会出现,如果存成.mp4或者.mov就完全正常。但我现在必须用.h265/.hevc格式,因为后续要配合杜比视界的MP4封装工具做重封装操作。我还试过用杜比官方的解封装工具,结果也是一样的问题,怀疑它背后也是调用了ffmpeg来处理。

我已经尝试过手动指定帧率、设置视频时基这些方法,但都没起作用。

为了排查问题,我还用ffprobe查了原文件和提取后文件的数据包时长、时基信息,结果如下:

原文件myfile.mp4的数据包时长(取前10个包)

执行命令:

ffprobe -select_streams v:0 -of default=noprint_wrappers=1 -show_entries packet=pts_time,duration -read_intervals "%+#10" myfile.mp4

输出:

pts_time=0.000000
duration=1001
pts_time=0.166833
duration=1001
pts_time=0.083417
duration=1001
pts_time=0.041708
duration=1001
pts_time=0.125125
duration=1001
pts_time=0.333667
duration=1001
pts_time=0.250250
duration=1001
pts_time=0.208542
duration=1001
pts_time=0.291958
duration=1001
pts_time=0.458792
duration=1001

原文件myfile.mp4的时基

执行命令:

ffprobe -v 0 -of compact=p=0:nk=1 -show_entries stream=time_base -select_streams v:0 myfile.mp4

输出:

1/24000|

提取后文件onlyvideo.h265的数据包时长(取前10个包)

执行命令:

ffprobe -select_streams v:0 -of default=noprint_wrappers=1 -show_entries packet=pts_time,duration -read_intervals "%+#10" onlyvideo.h265

输出:

pts_time=N/A
duration=48000
pts_time=N/A
duration=48000
pts_time=N/A
duration=48000
pts_time=N/A
duration=48000
pts_time=N/A
duration=48000
pts_time=N/A
duration=48000
pts_time=N/A
duration=48000
pts_time=N/A
duration=48000
pts_time=N/A
duration=48000
pts_time=N/A
duration=48000

提取后文件onlyvideo.h265的时基

执行命令:

ffprobe -v 0 -of compact=p=0:nk=1 -show_entries stream=time_base -select_streams v:0 onlyvideo.h265

输出:

1/1200000

有没有大佬能帮我分析下这是怎么回事,该怎么解决这个帧率异常的问题呀?

备注:内容来源于stack exchange,提问作者pop_shswt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.20 06:24:38