预览时间是电影预览片段开始的时间点。电影预览是电影的一个非常短的版本,通常少于 5 秒。
文件用两个数值来定义这个预览,一个是起始时间,一个是长度。预览时间是起始时间,预览时长是长度。每个轨道上的一个标记会说明预览是否使用该轨道。
哪些文件携带它
预览时间位于 QuickTime 电影头部中,用来描述整部电影。这个头部还包含电影的时间基准和它的时长。
QuickTime 把文件的这一部分称为类型为 mvhd 的 atom。MP4 格式有同类型的头部,并称之为 box。
元数据读取器 ExifTool 会读取 QuickTime 文件以及它称为基于 QuickTime 的格式中的这个头部。例如,这些文件可以显示预览时间:
- MOV 和 QT,即 Apple 的 QuickTime 电影格式
- MP4,MPEG-4 文件格式
- M4A、M4B、M4P 和 M4V 音频与视频文件
- 3GP 和 3GPP 音频与视频文件
- 用于 Adobe Flash Player 的 F4A、F4B、F4P 和 F4V 文件
- AAX,即 Audible 增强有声书格式
因此,AAX 有声书即使不是视频,也可以显示预览时间。AVI 文件则不同。ExifTool 将 AVI 描述为基于 RIFF 的格式,其 AVI 值列表中不包含预览时间。
该数值的格式
在文件内部,预览时间是一个 4 字节的数字。该数字计算的是电影时间基准的单位,不是秒数。
时间基准是每秒的单位数。如果时间基准是 60,那么 60 个单位就是 1 秒。
ExifTool 会用时间基准去除以存储的数字,然后以三种形式之一显示时间结果:
- 当存储的数字为 0 时,显示
0 s - 当时间少于 30 秒时,显示带 2 位小数和字母 s 的秒数
- 当时间在 30 秒及以上时,显示用冒号分隔的小时、分钟和秒
数值的来源
写入电影文件的软件会设置预览时间。Apple 的 QuickTime 文档中描述了一个函数,允许应用定义预览的开始时间和长度。
MP4 文件基于标准 ISO/IEC 14496-12。该标准把头部中相同位置命名为 pre_defined,并将其设为 0。元数据读取器仍然可以将这些字节显示为预览时间,因此 MP4 文件通常会显示 0 s。
有些软件会在这里写入 0。FFmpeg 会在此位置写入 0,并将其标记为保留字段。Chromium 浏览器项目中的 MP4 写入器也会写入 0。
FFmpeg 在读取文件时也会跳过这个值。因此,仅依赖 FFmpeg 的报告中不会包含预览时间这一行。
这对你的文件有何影响
需要将预览时间和预览时长结合起来看。单独一个 0 s 的数值并不能说明电影是否有预览。
在 Apple 的 QuickTime 文档中,当电影没有预览时,一个函数会为这两个值都返回 0。Apple 的示例代码也会检测时长是否大于 0 来判断电影是否有预览。因此,如果预览时长同样为 0 s,电影就没有预览。
它与类似数值有何不同
还有一些值与预览时间相邻或名称相似。每个值回答的是不同的问题:
- 预览时长是预览片段的长度,使用相同的时间基准单位。
- 海报时间是电影海报的时间点,即代表电影的那一帧静止画面。
- 预览图片尺寸是文件中预览图片的宽度和高度,而不是一个时间。