Příjem dat a jejich zobrazení ze serveru – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Příjem dat a jejich zobrazení ze serveru – .NET – Fórum – Programujte.comPříjem dat a jejich zobrazení ze serveru – .NET – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
Tootal0
Newbie
28. 2. 2011   #1
-
0
-

Dobrý den,

mám za úkol vytvořit program pro příjem multimediálních dat ze serveru (použit bude VLC a Darwin Streaming Server).
Pro příjem dat bude použitý protokol RTP/RTCP a později také RTSP. V programování jsem začátečník, ale snažím se naučit co nejvíc, bohužel náročnost tohoto úkolu přesahuje moje možnosti.

V současné době jsem si našel knihovnu (RTP/RTCP - http://www.streamcoders.com/products/rtpnet.html ) a přijímám data viz. screen :

.


Zdrojový kód:



using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Sockets;
using StreamCoders.Network;
using System.Windows.Forms;

namespace RtpNetCsharp
{
class RtpFramer
{

public RtpFramer(String RTPipAddress, int RTPport, String RTCPipAddress, int RTCPport, bool forward, String forwardIP, int forwardPort)
{

previousTS = 0;
forwardPackets = forward;
session = new RTPSession();
receiver = new RTPReceiver();

IPEndPoint rtpEp = new IPEndPoint(IPAddress.Parse(RTPipAddress), RTPport);
IPEndPoint rtcpEp = new IPEndPoint(IPAddress.Parse(RTCPipAddress), RTCPport);
participant = new RTPParticipant(rtpEp, new IPEndPoint(IPAddress.Parse(forwardIP), forwardPort), rtcpEp, new IPEndPoint(IPAddress.Any, 0));

if(forwardPackets)
{
sender = new RTPSender();
IPEndPoint senderEP = new IPEndPoint(IPAddress.Parse(forwardIP), forwardPort);
sender.AddParticipant(participant);
session.AddSender(sender);
}

session.NewRTPPacket = NewRTPPacket;
session.NewRTCPPacket = NewRTCPPacket;
receiver.AddParticipant(participant);
session.AddReceiver(receiver);


}


public void Terminate()
{
session.RemoveReceiver(receiver);
session.RemoveSender(sender);
receiver.Dispose();
sender.Dispose();
participant.Dispose();

}

bool NewRTPPacket(RTPPacket packet, byte[] rawBuffer)
{
if (forwardPackets)
session.SendPacket(packet);
Console.WriteLine(packet.ToString());
return true;
}

void NewRTCPPacket(RTCPCompoundPacket packet)
{
Console.WriteLine(packet.ToString());
}

private RTPSession session;
private RTPReceiver receiver;
private RTPParticipant participant;
private RTPSender sender;
private RTPParticipant senderParticipant;
private bool forwardPackets;
private int previousTS;

}

class Program
{
static void Main(string[] args) //výchozí třída, která všechno řídí, volám všechnu obsluhu
{
if (args.Length < 4)
{
Console.WriteLine("-rtpif RTP local interface IP address");
Console.WriteLine("-rtpport RTP local port");
Console.WriteLine("-rtcpif RTCP local interface IP address");
Console.WriteLine("-rtcpport RTCP local port");
Console.WriteLine("-forward IPaddress port");
//return;
}

String rtpIP = "";
int rtpPort = 0;
String rtcpIP = "";
int rtcpPort = 0;
String forwardIP = "";
int forwardPort = 0;
bool forward = false;




for (int i = 0; i < args.Length; i++)
{
if (args[i].ToUpper() == "-RTPIF")
{
rtpIP = args[i + 1];
i++;
}
if (args[i].ToUpper() == "-RTCPIF")
{
rtcpIP = args[i + 1];
i++;
}
if (args[i].ToUpper() == "-RTPPORT")
{
rtpPort = int.Parse(args[i + 1]);
i++;
}
if (args[i].ToUpper() == "-RTCPPORT")
{
rtcpPort = int.Parse(args[i + 1]);
i++;
}

if(args[i].ToUpper() == "-FORWARD")
{
i++;
forwardIP = args[i++];
forwardPort = int.Parse(args[i++]);
forward = true;
}

}
rtpIP = "127.0.0.1";
rtcpIP = "127.0.0.1";
rtpPort = 5004;
rtcpPort = 5005;
forward = true;
forwardIP = "127.0.0.1";
forwardPort = 5005;


RtpFramer framer = new RtpFramer(rtpIP, rtpPort, rtcpIP, rtcpPort, forward, forwardIP, forwardPort); //frame=okno

Console.WriteLine("Endpoint created. Terminate with any key.");
Console.ReadKey();
}

}
}


Potřeboval bych poradit jak vypsat informace o příjmu dat
Console.WriteLine(packet.ToString());
do formuláře (místo cmd, jak je to nyní). Dále bych se chtěl zeptat, jak převést příjmaná data na obraz/video.

Pavel

Nahlásit jako SPAM
IP: 147.229.192.–
Reklama
Reklama
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 50 hostů

Podobná vlákna

TCP protokol a příjem dat — založil durmitor

Získávání dat z jiných serverů — založil DaveLister

Ziskani dat z MS SQL SERVERU — založil machis

Sosání dat z jiného serveru — založil Colpik

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý