毫秒是怎么回事?
What the Hex is Going on with Milliseconds?
我有值 88
40
B0
00
。他们是十六进制。我不明白如何,但它们代表了纳秒数。我需要帮助来理解 this document,其中概述了 Matroska 和 WebM 元数据编码。我对此比较陌生,但我正在使用 JavaScript 来更改文件持续时间。我目前使用的是有效的,但目标是了解如何设置 WebM 视频文件的自定义持续时间。该文档显示以下持续时间参数:
- 元素名称
- 时长
- EBML 树中的级别
- 2
- 元素 ID 显示为八位字节
- 0x4489
- 必填
- 错
- 可能会出现多次
- 错
- 包含在
- 1
- 2
- 3
- 4
- 可以在 WebM 中使用
- 正确
- 说明
- 基于 TimestampScale 的片段持续时间(以纳秒为单位)
我正在使用默认的时间戳刻度 (1000000
)。我的问题是如何获得这些十六进制值,并将它们转换为 hours:minutes:seconds:milliseconds
。我只是被难住了 :( 0x8840B000
对我没有帮助。
请参阅有关 的 Stack Overflow 问题。
在这个问题中,您问的是持续时间元素。
您提到的持续时间元素由
组成
- 元素 ID
44 89
- 元素数据大小
88
(一个 1 字节的可变大小整数,表示 8 个字节的元素数据)
- 元素数据
40 B0 00 00 00 00 00 00
(十进制 4096 的大端 64 位浮点表示)
在JavaScript中,您可以使用如下代码(改编自 to question )
将这8个字节转换为它们所代表的相应浮点值
let b = new Uint8Array([0x40, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]);
let f = (new DataView(b.buffer)).getFloat64();
当 TimestampScale 值为默认值(一百万纳秒)时,Duration 值以毫秒为单位。在这种情况下,持续时间为 4096 毫秒或 4.096 秒。
如果您想要以纳秒为单位的持续时间,请将 Duration 值乘以 TimestampScale 值。
我有值 88
40
B0
00
。他们是十六进制。我不明白如何,但它们代表了纳秒数。我需要帮助来理解 this document,其中概述了 Matroska 和 WebM 元数据编码。我对此比较陌生,但我正在使用 JavaScript 来更改文件持续时间。我目前使用的是有效的,但目标是了解如何设置 WebM 视频文件的自定义持续时间。该文档显示以下持续时间参数:
- 元素名称
- 时长
- EBML 树中的级别
- 2
- 元素 ID 显示为八位字节
- 0x4489
- 必填
- 错
- 可能会出现多次
- 错
- 包含在
- 1
- 2
- 3
- 4
- 可以在 WebM 中使用
- 正确
- 说明
- 基于 TimestampScale 的片段持续时间(以纳秒为单位)
我正在使用默认的时间戳刻度 (1000000
)。我的问题是如何获得这些十六进制值,并将它们转换为 hours:minutes:seconds:milliseconds
。我只是被难住了 :( 0x8840B000
对我没有帮助。
请参阅有关
在这个问题中,您问的是持续时间元素。
您提到的持续时间元素由
组成- 元素 ID
44 89
- 元素数据大小
88
(一个 1 字节的可变大小整数,表示 8 个字节的元素数据) - 元素数据
40 B0 00 00 00 00 00 00
(十进制 4096 的大端 64 位浮点表示)
在JavaScript中,您可以使用如下代码(改编自
let b = new Uint8Array([0x40, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]);
let f = (new DataView(b.buffer)).getFloat64();
当 TimestampScale 值为默认值(一百万纳秒)时,Duration 值以毫秒为单位。在这种情况下,持续时间为 4096 毫秒或 4.096 秒。
如果您想要以纳秒为单位的持续时间,请将 Duration 值乘以 TimestampScale 值。