Video 毫秒的十六进制是怎么回事?
我有值Video 毫秒的十六进制是怎么回事?,video,hex,metadata,webm,uint8array,Video,Hex,Metadata,Webm,Uint8array,我有值8840B000。它们是妖术。我不明白怎么回事,但它们代表纳秒数。我需要帮助了解Matroska和WebM元数据编码的概要。我对这方面比较陌生,但我正在使用JavaScript更改文件的持续时间。我目前使用的是works,但目标是了解如何设置WebM视频文件的自定义持续时间。该文档显示了以下持续时间参数: 元素名 持续时间 EBML树中的级别 二, 元素ID显示为八位字节 0x4489 强制性的 假的 可能发生多次 假的 包含在 一, 二, 三, 四,
88
40
B0
00
。它们是妖术。我不明白怎么回事,但它们代表纳秒数。我需要帮助了解Matroska和WebM元数据编码的概要。我对这方面比较陌生,但我正在使用JavaScript更改文件的持续时间。我目前使用的是works,但目标是了解如何设置WebM视频文件的自定义持续时间。该文档显示了以下持续时间参数:
- 元素名
- 持续时间
- EBML树中的级别
- 二,
- 元素ID显示为八位字节
- 0x4489
- 强制性的
- 假的
- 可能发生多次
- 假的
- 包含在
- 一,
- 二,
- 三,
- 四,
- 可在WebM中使用
- 真的
- 描述
- 基于时间尺度的段持续时间(纳秒)
我使用的是默认的时间戳刻度(
1000000
)。我的问题是如何获取这些十六进制值,并将它们转换为小时:分钟:秒:毫秒
。我只是被难住了:(0x8840B000
对我没有帮助。请参阅有关堆栈溢出的问题
在这个问题中,您询问的是一个持续时间元素
您提到的持续时间元素是由
- 元素ID
4489
- 元素数据大小
(一个1字节的可变大小整数,表示后面有8个字节的元素数据)88
- 元素数据
(十进制4096的大端64位浮点表示)40 B0 00
如果希望持续时间以纳秒为单位,请将持续时间值乘以TimestampScale值。请参阅有关堆栈溢出的问题 在这个问题中,您询问的是一个持续时间元素 您提到的持续时间元素是由
- 元素ID
4489
- 元素数据大小
(一个1字节的可变大小整数,表示后面有8个字节的元素数据)88
- 元素数据
(十进制4096的大端64位浮点表示)40 B0 00
如果要以纳秒为单位计算持续时间,请将持续时间值乘以TimestampScale值。不是64位(8个十六进制值)而不是32位(4个十六进制值)…?我不太熟悉MKV/WebM容器,但我在过去遇到过这样的信息,所以请仔细检查一下。quicVO在视频制作堆栈交换上发布了相同的问题:@Bavi_H,我这样做是因为我想确保这个问题能够传达给正确的人。我不确定哪个社区最好,所以我在这两个社区上都发布了。是吗t不是64位(8个十六进制值),而是32位(4个十六进制值)…?我不太熟悉MKV/WebM容器,但我在过去遇到过这样的信息,所以请仔细检查一下。quicVO在视频制作堆栈交换上发布了相同的问题:@Bavi_H,我这样做是因为我想确保这个问题能够传达给正确的人。我不确定哪个社区最好,所以我在这两个社区上都发布了。比谢谢你的回答。我怎样才能将一个Float64数字转换成一个十六进制值数组?它是否总是一个Float64而不是一个Float32?我知道Float64有8个值,Float32有4个值。所以88-->Float64变量,84-->Float32变量。既然我知道了这一点,我怎样才能将一个Float数字转换成Uint8Array代表这些价值观?我可能会问一个新问题。我做了一个新的尝试,我发现了。非常感谢你的帮助:)谢谢你的回答。如何将Float64数字转换为十六进制值数组?它是否总是Float64而不是Float32?我知道Float64有8个值,Float32有4个值。所以88-->浮点64变量,84-->浮点32变量。既然我知道了这一点,我如何才能将浮点数反转为表示这些值的UINT8数组?我可能会问一个新问题。我做了一个决定,我明白了。非常感谢您的帮助:)
let b = new Uint8Array([0x40, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]);
let f = (new DataView(b.buffer)).getFloat64();