Example #1
0
        public static void OnPacketFound(RtmpPacketInterop obj)
        {
            AmfContainer deserializedOutput = null;

//
//            var x = "new byte[]{";
//            foreach(var b in obj.GetBytes())
//            {
//                x += b.ToString("x2") + ",";
//            }
//            x += "};";

            using (var newStream = new MemoryStream(obj.GetBytes()))
            {
                var streamCopy = PruneStreamChunkDelimiters(newStream, obj);

                Console.WriteLine("Found packet {2} from {0} length {1}", obj.GetSourceIP(), obj.GetLength(),
                                  obj.GetRtmpPacketType());


                deserializedOutput = AMFSerializerUtil <AmfContainer> .DeserializeAmf(streamCopy);
            }

            Visualize(deserializedOutput, 0);
        }
Example #2
0
        private static void OnPacketFound(RtmpPacketInterop obj)
        {
            String bytesString = "";
            using (var stream = new MemoryStream(obj.GetBytes()))
            {
                bytesString = Encoding.UTF8.GetString(stream.ToArray());
            }

            Console.WriteLine("Found packet {2} from {0} length {1}", obj.GetSourceIP(), obj.GetLength(), obj.GetRtmpPacketType());
            Console.WriteLine("\t\t{0}", bytesString.Substring(0,bytesString.Length > 200 ? 200 : bytesString.Length));
            Console.WriteLine();
        }
Example #3
0
        private static MemoryStream PruneStreamChunkDelimiters(MemoryStream newStream, RtmpPacketInterop obj)
        {
            var streamCopy = new MemoryStream(obj.GetLength());
            var count      = 1;

            for (int i = 0; i < 9; i++)
            {
                byte b = Convert.ToByte(newStream.ReadByte());
                streamCopy.WriteByte(b);
            }

            while (newStream.Position != obj.GetLength())
            {
                byte b = Convert.ToByte(newStream.ReadByte());

                if (count % 128 == 0 && b == 0xc3)
                {
                }
                else
                {
                    count++;
                    streamCopy.WriteByte(b);
                }
            }

            streamCopy.Seek(0, SeekOrigin.Begin);
            var  firstByte     = streamCopy.ReadByte();
            bool useLongHeader = firstByte == 0;
            int  objectId;

            if (!useLongHeader)
            {
                objectId = firstByte & 0x0F;
            }

            if (useLongHeader)
            {
                streamCopy.Seek(12, SeekOrigin.Begin);
            }
            else
            {
                streamCopy.Seek(8, SeekOrigin.Begin);
            }

            return(streamCopy);
        }
Example #4
0
 public void DecodePacket2()
 {
     var packet = new RtmpPacketInterop(invokeData, invokeData.Length, "127.0.0.1", "127.0.0.1");
     PacketHandler.OnPacketFound(packet);
 }