有没有办法让我的 mp4 文件的持续时间看起来比实际更长或更短?我尝试使用十六进制编辑器,但作为一个新手,我无法让它工作。
答案1
因此,在浏览完文档(感谢 slhck 的指点),我找到了您正在寻找的确切部分。
“mvhd”原子后面的五个 4 字节(十六进制为 6D 76 68 64)是时间单位的持续时间。其前的 4 个字节是时间刻度。总时间(以秒为单位)是持续时间/时间刻度。这似乎不会改变视频播放时的实际长度,但会改变观看时报告的持续时间。
mvhd 以红色圈出,时间刻度以黑色表示,持续时间以突出显示:
答案2
感谢 Doom 先生的回答,我想稍微改进一下。我把这个改进放在了另一个回答中,而不是在他的回复下的评论中,因为我的评分不够高,无法发表评论,但我的发现可能对某些人有用。
我用 VLC 录制的视频出现异常后,我也遇到了与 OP 类似的任务。宣传的视频长度(播放器中显示的长度)为 40 分钟,而数据播放时间约为 5 小时。我知道视频大小对于其播放时间来说太大了。如果在时间线末尾用 VLC 播放器打开视频,它会继续播放超出规定的播放时间。所以问题出在损坏的视频元数据上。
Mr doom 的答案的问题在于,我已将持续时间改为 FF FF FF FF,但我所能实现的只是大约 1 小时 11 分钟的游戏时间。从那时起,我需要减少时间尺度(持续时间前 4 个 dex 数字)以获得更长的游戏时间。然而,在 HxD 中更改它并没有产生任何一致的结果。长话短说,我发现一个问题在于我搞乱了字节序。编辑器默认值是 little,而这个需要一个大端模式。更改后,我能够设置正确的 Int64 数字并来回缩放总播放时间。它解决了一个问题,现在我能够在时间轴中看到完整的播放。
此外,Doon 先生的链接文档略有偏差。他谈论的是 mvhd atom,而链接指向的是 mdhd。更正后的文档链接为这里。