Created
July 24, 2014 02:00
-
-
Save kellyelton/8805334779516ee66e13 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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