private void sendMessage(byte[] data, RtmpMessageTypeId messageType)
{
const byte chunkHeaderType = 0x03;
var timeStampDelta = new byte[3] { 0x00, 0x00, 0x10 };
//The packet length is only 3 bytes long when sent, so the last byte of the integer needs to be cut off
var packetLengthBytes = new byte[3];
{
var packetLengthValue = data.Length;
var packetLengthBytesFull = converter.GetBytes(packetLengthValue);
for (var i = 0; i < packetLengthBytes.Length; i++)
{
packetLengthBytes[i] = packetLengthBytesFull[i + 1];
}
}
var memory = new MemoryStream();
var writer = new EndianBinaryWriter(EndianBitConverter.Big, memory);
writer.Write(chunkHeaderType);
writer.Write(timeStampDelta);
writer.Write(packetLengthBytes);
writer.Write((byte)messageType);
var streamIdBytes = converter.GetBytes(StreamId);
for (int i = streamIdBytes.Length - 1; i >= 0; i--)
{
writer.Write(streamIdBytes[i]);
}
writer.Write(data);
tcpClient.GetStream().Write(memory.ToArray(), 0, memory.ToArray().Length);
}