RTMP.Client.SendFlv C# (CSharp) Method

SendFlv() public method

public SendFlv ( FlvTag flvs ) : void
flvs FlvTag
return void
        public void SendFlv(FlvTag[] flvs)
        {
            var memory = new MemoryStream();
            var writer = new EndianBinaryWriter(EndianBitConverter.Big, memory);

            const byte chunkHeaderType = 0x03;

            var chunkCount = 0;
            for (var i = 0; i < flvs.Length; i++)
            {
                var flv = flvs[i];
                chunkCount += flv.Data.Length;
                writer.Write(chunkHeaderType);
                writer.Write(flv.TimeStamp, 0, 3);
                writer.Write(flv.Length, 0, 3);
                writer.Write((byte) flv.TagType);

                //writer.Write(new byte[] {0x00, flv.StreamId[0], flv.StreamId[1], flv.StreamId[2]});

                var streamIdBytes = converter.GetBytes(StreamId);
                for (int id = streamIdBytes.Length - 1; id >= 0; id--)
                {
                    writer.Write(streamIdBytes[id]);
                }

                writer.Write(flv.Data);
            }
            if(chunkCount > CurrentChunkSize)
                SendChunkSize((uint)chunkCount);
            tcpClient.GetStream().Write(memory.ToArray(), 0, memory.ToArray().Length);
        }

Usage Example

Exemplo n.º 1
0
        static void Main(string[] args)
        {
            FlvStreamer streamer = new FlvStreamer();

            var client = new Client();

            client.PublisherId = "live_YourStreamID";
            client.Connect("199.9.255.53");
            client.Start();

            var vclient = new VideoClient();
            vclient.GrabVideo("http://www.youtube.com/watch?v=at68PMbgyhw");
            vclient.AddedTag += delegate(FlvTag tag)
                                    {
                                        client.SendFlv(new FlvTag[1] {tag});
                                    };

            while(true)
            {
                client.Update();
                if(client.CurrentState == Client.ClientStates.Streaming)
                    vclient.Update();
            }
        }