public override void RunThread() { while (mRun) { Byte[] receiveBytes = mUdpClient.Receive(ref mIPEndPoint); DebugFunctions.PrintChars("receive bytes:" + receiveBytes.Length.ToString() + "\n"); NewData(this, new DataEventArgs(ref receiveBytes)); using (var fileStream = new FileStream("data.bin", FileMode.Append, FileAccess.Write, FileShare.None)) { using (var bw = new BinaryWriter(fileStream)) { Byte[] len = BitConverter.GetBytes(receiveBytes.Length); bw.Write(len, 0, 2); bw.Write(receiveBytes, 0, receiveBytes.Length); } } /* * int fragment_type = receiveBytes[12] & 0x1f; * int nal_type = receiveBytes[13] & 0x1f; * int start_bit = Convert.ToInt32((receiveBytes[13] & 0x80) != 0); * int end_bit = Convert.ToInt32((receiveBytes[13] & 0x20) != 0); */ } }
public void ReceivingData() { while (!stopEvent.WaitOne(0, true)) { if (mServerStream.DataAvailable) { byte[] readBuffer = new byte[ReceiveBufferSize]; int numberOfBytesRead = 0, pos = 0; if (parsing_mode == ParsingMode.HEADER) { StringBuilder complegeMessage = new StringBuilder(); while (mServerStream.DataAvailable) { numberOfBytesRead = mServerStream.Read(readBuffer, 0, readBuffer.Length); complegeMessage.Append(Encoding.ASCII.GetString(readBuffer, 0, numberOfBytesRead)); } pos = parseData(complegeMessage.ToString()); DebugFunctions.PrintChars(complegeMessage.ToString()); if (pos == complegeMessage.Length) { SetCommand(current_command); } if (current_command == RtspCommand.PLAY) { if (CommandIsDone(current_command)) { nsvideo.SetDecodeParameter(sprop); nsvideo.Start(); parsing_mode = ParsingMode.DATA; } } } if (parsing_mode == ParsingMode.DATA) { while (mServerStream.DataAvailable) { numberOfBytesRead = mServerStream.Read(readBuffer, 0, readBuffer.Length); DebugFunctions.PrintChars("receieve " + numberOfBytesRead.ToString() + "\n"); /*using (var fileStream = new FileStream("data.bin", FileMode.Append, FileAccess.Write, FileShare.None)) * { * using (var bw = new BinaryWriter(fileStream)) * { * bw.Write(readBuffer, 0, numberOfBytesRead); * } * }*/ data.AddRange(readBuffer.SubArray(0, numberOfBytesRead)); if (data.Count > 4) { RTSPInterleavedFrame iFrame = new RTSPInterleavedFrame(data.GetRange(0, 4).ToArray()); if (data.Count >= (iFrame.Length + 4)) { nsvideo.PushMediaPacket(data.GetRange(4, iFrame.Length).ToArray()); data.RemoveRange(0, iFrame.Length + 4); } } } } } //end of if(mServerStream.DataAvailable) statement } //end of while(!stopEvent.WaitOne(0, true)) statement }