Skip to content

Instantly share code, notes, and snippets.

@kellyelton
Created July 24, 2014 02:00
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kellyelton/8805334779516ee66e13 to your computer and use it in GitHub Desktop.
Save kellyelton/8805334779516ee66e13 to your computer and use it in GitHub Desktop.
using System;
using System.Collections.Generic;
using System.Management.Instrumentation;
using System.Net;
using System.Net.Sockets;
using Media;
using Media.Rtmp;
using Media.Rtp;
using Media.Rtsp;
using Media.Rtsp.Server.Streams;
using Media.Sdp;
namespace ASDF.StreamServer
{
class Program
{
static void Main(string[] args)
{
var server = new TcpListener(IPAddress.Any, 1935 );
server.Start();
Listen(server);
while (server.Server.IsBound)
{
if (Console.KeyAvailable)
{
Console.ReadKey();
server.Stop();
}
}
}
static async void Listen(TcpListener server)
{
var socket = await server.AcceptTcpClientAsync();
if(server.Server.IsBound)
Listen(server);
if(socket != null)
InitSocket(socket);
}
private static void InitSocket(TcpClient client)
{
var nc = RtpClient.Duplexed(client.Client);
var con = new RtpClient.TransportContext(0, 1, RFC3550.Random32());
con.InitializeSockets(client.Client);
nc.Add(con);
nc.RtpPacketReceieved += (sender, packet) => { Console.WriteLine(packet.Length); };
nc.RtcpPacketReceieved += (sender, packet) => { Console.WriteLine(packet.Length); };
nc.InterleavedData += (sender, packet) => { Console.WriteLine(packet.Count); };
nc.Connect();
// var na = new SocketAsyncEventArgs();
// na.AcceptSocket = client.Client;
// na.Completed += SocketEndRcv;
// na.SetBuffer(new byte[2048], 0, 2048);
// client.Client.ReceiveAsync(na);
//}
//private static RtmpPacket currentPacket;
//static void SocketEndRcv(object o, SocketAsyncEventArgs args)
//{
// var c = new RtpClient();
// var na = new SocketAsyncEventArgs();
// na.AcceptSocket = args.AcceptSocket;
// na.Completed += SocketEndRcv;
// na.SetBuffer(new byte[2048], 0, 2048);
// args.AcceptSocket.ReceiveAsync(na);
// // Vrry Emportent
// args.Completed -= SocketEndRcv;
// // Now process data
// if (currentPacket == null)
// {
// currentPacket = new RtmpPacket(args.Buffer);
// }
// else
// {
// currentPacket.CompleteFrom();
// }
// var pack = new RtmpPacket(args.Buffer);
// Console.WriteLine(str);
//}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment