优化`cenc`的`KID`读取

This commit is contained in:
nilaoda 2022-10-29 17:36:17 +08:00
parent 85eaf7d4bd
commit 5b88660518
1 changed files with 18 additions and 1 deletions

View File

@ -50,7 +50,6 @@ namespace Mp4SubtitleParser
private static void ReadBox(byte[] data, ParsedMP4Info info) private static void ReadBox(byte[] data, ParsedMP4Info info)
{ {
info.KID = HexUtil.BytesToHex(data[^16..]).ToLower();
//find schm //find schm
var schmBytes = new byte[4] { 0x73, 0x63, 0x68, 0x6d }; var schmBytes = new byte[4] { 0x73, 0x63, 0x68, 0x6d };
var schmIndex = 0; var schmIndex = 0;
@ -66,6 +65,24 @@ namespace Mp4SubtitleParser
{ {
info.Scheme = System.Text.Encoding.UTF8.GetString(data[schmIndex..][8..12]); info.Scheme = System.Text.Encoding.UTF8.GetString(data[schmIndex..][8..12]);
} }
if (info.Scheme != "cenc") return;
//find KID
var tencBytes = new byte[4] { 0x74, 0x65, 0x6E, 0x63 };
var tencIndex = 0;
for (int i = 0; i < data.Length - 4; i++)
{
if (new byte[4] { data[i], data[i + 1], data[i + 2], data[i + 3] }.SequenceEqual(tencBytes))
{
tencIndex = i;
break;
}
}
if (tencIndex + 12 < data.Length)
{
info.KID = HexUtil.BytesToHex(data[tencIndex..][12..28]).ToLower();
}
} }
} }
} }