private void ParseMxf(Stream stream) { stream.Seek(0, SeekOrigin.Begin); ReadHeaderPartitionPack(stream); if (IsValid) { var length = stream.Length; long next = _startPosition; while (next + 20 < length) { stream.Seek(next, SeekOrigin.Begin); var klv = new KlvPacket(stream); //Console.WriteLine(); //Console.WriteLine("Key: " + klv.DisplayKey); //Console.WriteLine("Type: " + klv.IdentifyerType); //Console.WriteLine("Total size: " + klv.TotalSize); //Console.WriteLine("Data position: " + klv.DataPosition); //if (klv.IdentifyerType == KeyIdentifier.PartitionPack) // Console.WriteLine("Partition status: " + klv.PartionStatus); next += klv.TotalSize; if (klv.IdentifierType == KeyIdentifier.EssenceElement && klv.DataSize < 500000) { stream.Seek(klv.DataPosition, SeekOrigin.Begin); var buffer = new byte[klv.DataSize]; stream.Read(buffer, 0, buffer.Length); string s = System.Text.Encoding.UTF8.GetString(buffer); if (IsSubtitle(s)) { _subtitleList.Add(s); } } } } }
private void ParseMxf(Stream stream) { stream.Seek(0, SeekOrigin.Begin); this.ReadHeaderPartitionPack(stream); if (this.IsValid) { long length = stream.Length; long next = this._startPosition; while (next + 20 < length) { stream.Seek(next, SeekOrigin.Begin); KlvPacket klv = new KlvPacket(stream); // Console.WriteLine(); // Console.WriteLine("Key: " + klv.DisplayKey); // Console.WriteLine("Type: " + klv.IdentifyerType); // Console.WriteLine("Total size: " + klv.TotalSize); // Console.WriteLine("Data position: " + klv.DataPosition); // if (klv.IdentifyerType == KeyIdentifier.PartitionPack) // Console.WriteLine("Partition status: " + klv.PartionStatus); next += klv.TotalSize; if (klv.IdentifierType == KeyIdentifier.EssenceElement && klv.DataSize < 500000) { stream.Seek(klv.DataPosition, SeekOrigin.Begin); byte[] buffer = new byte[klv.DataSize]; stream.Read(buffer, 0, buffer.Length); string s = Encoding.UTF8.GetString(buffer); if (this.IsSubtitle(s)) { this._subtitleList.Add(s); } } } } }
private void ParseMxf(Stream stream) { stream.Seek(0, SeekOrigin.Begin); ReadHeaderPartitionPack(stream); if (!IsValid) { return; } var length = stream.Length; long next = startPosition; while (next + 20 < length) { stream.Seek(next, SeekOrigin.Begin); var klv = new KlvPacket(stream); //Console.WriteLine(); //Console.WriteLine("Key: " + klv.DisplayKey); //Console.WriteLine("Type: " + klv.IdentifyerType); //Console.WriteLine("Total size: " + klv.TotalSize); //Console.WriteLine("Data position: " + klv.DataPosition); //if (klv.IdentifyerType == KeyIdentifier.PartitionPack) // Console.WriteLine("Partition status: " + klv.PartionStatus); next += klv.TotalSize; if (klv.IdentifierType != KeyIdentifier.EssenceElement || klv.DataSize >= 500000) { continue; } stream.Seek(klv.DataPosition, SeekOrigin.Begin); var buffer = new byte[klv.DataSize]; stream.Read(buffer, 0, buffer.Length); string s = System.Text.Encoding.UTF8.GetString(buffer); if (IsSubtitle(s)) { subtitleList.Add(s); } } }