我之前曾就 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 部分发生的情况。