startPosition
is not offset to MemoryStream, instead to ba
. Change it as
allFrameStream.Write(ba, 0, ba.Length);
All byte arrays will be appended to allFrameStream
BTW: Don't use ba = allFrameStream.GetBuffer();
instead use ba = allFrameStream.ToArray();
(You actually don't want internal buffer of MemoryStream).