词典

什么是预览时间?

Preview Time 是 QuickTime 电影头中的一个数值。它标记了电影的短预览从哪里开始,很多文件(例如 MP4)在这里显示为 0 s。

preview-time

预览时间是电影预览片段开始的时间点。电影预览是电影的一个非常短的版本,通常少于 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,电影就没有预览。

它与类似数值有何不同

还有一些值与预览时间相邻或名称相似。每个值回答的是不同的问题:

  • 预览时长是预览片段的长度,使用相同的时间基准单位。
  • 海报时间是电影海报的时间点,即代表电影的那一帧静止画面。
  • 预览图片尺寸是文件中预览图片的宽度和高度,而不是一个时间。