尝试使用 FFmpeg 的 -write_bext 选项写入 UMID 时出现意外行为

尝试使用 FFmpeg 的 -write_bext 选项写入 UMID 时出现意外行为

我之前曾就 Swift 函数问过这个问题,但看来即使使用纯 FFmpeg CLI 时问题仍然存在。

我的目标是将以下 UMID 写入 WAV 文件:

0x68753A444D6F12269C600050E4C0006773F8EDBBEA4680008E310CEB。

但是,当我随后从 output.wav 读取文件时,UMID 显示为:

0x68753A444D6F12267FFFFFFFFFFFFFF73F8EDBBEA4680007FFFFFFFFFFFFFFFF

这是我正在使用的命令:

-i input.wav -c copy -write_bext 1 -metadata umid="0x68753A444D6F12269C600050E4C0006773F8EDBBEA4680008E310CEBB2D3F938" output.wav

是我忽略了什么吗,或者这种行为是一种故障?

答案1

64 位 UMID 中的每个 16 位十六进制部分都转换为 long long 类型,然后进行存储。如果 16 位十六进制部分超出 long long 类型的范围,则写入 LLONG_MAX 或 LLONG_MIN。这就是第 2 和第 4 部分发生的情况。

相关内容