Realtime Bilder über UDP im LAN übertragen

Übersicht BlitzBasic Allgemein

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

 

naibaf7

Betreff: Realtime Bilder über UDP im LAN übertragen

BeitragMi, Feb 11, 2009 18:25
Antworten mit Zitat
Benutzer-Profile anzeigen
hallo,

ich möchte gerne (aus spass...) bilder (realtime) über UDP übertragen. Das möchte ich natürlich nicht übers internet sondern über LAN machen, das sollte ja bei 100mbit/s PC zu PC direktverbindung (per crossoverkabel) kein problem sein, oder?

Nur, wie macht man das? Man kann ja schlecht jeden Pixel des Bildes einscannen und einzeln per UDP versenden!

thx, naibaf7
My Pc:
MSI 790FX-GD70, Phenom X4 955BE, 2x2GB DDR3-1600, 8800GTS-512, WD 640GB + Samsung 160GB, Scythe Kaze Master

coolo

BeitragMi, Feb 11, 2009 18:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Aber Defakto wird das so gemacht Wink.
http://programming-with-design.at/ <-- Der Preis ist heiß!
That's no bug, that's my project!
"Eigenzitate sind nur was für Deppen" -Eigenzitat
 

naibaf7

BeitragMi, Feb 11, 2009 18:35
Antworten mit Zitat
Benutzer-Profile anzeigen
aber das lagt dann ja böse?? Ich meine, es gibt ja remote software und das zeug lagt nicht mal übers Internet!! wie sollte denn das per pixel versenden gehen?? is ja mal ganz schlecht!
My Pc:
MSI 790FX-GD70, Phenom X4 955BE, 2x2GB DDR3-1600, 8800GTS-512, WD 640GB + Samsung 160GB, Scythe Kaze Master

Tankbuster

BeitragMi, Feb 11, 2009 18:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Warum sollte man das nicht können?

Sinnvoller wäre es aber, jedes Byte auszulesen (ReadByte), die Bytes dann per UDP an den Empfänger zu schicken, und dann das ganze wieder in eine Datei schreiben. Sollte funktionieren Wink
Twitter
Download Jewel Snake!
Windows|Android
 

naibaf7

BeitragMi, Feb 11, 2009 18:36
Antworten mit Zitat
Benutzer-Profile anzeigen
is klar -.- aber das is dann ja niemals realtime? so hab ich ja ne minute pro bild -.-
My Pc:
MSI 790FX-GD70, Phenom X4 955BE, 2x2GB DDR3-1600, 8800GTS-512, WD 640GB + Samsung 160GB, Scythe Kaze Master
 

DjDETE

BeitragMi, Feb 11, 2009 18:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Dann übertrag nur das, was sich verändert Wink
Aktuelles Projekt: XXX |XXX | 3% der v1b fertig
www.emu-soft.de.vu Für die Homepage suche ich noch Linktauschpartner, bei Interesse einfach melden.

D2006

Administrator

BeitragMi, Feb 11, 2009 18:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Jepp [bezieht sich auf Tankbusters Vorschlag], dann sind sie, je nach Dateiformat, eventuell schon komprimiert. Oder die Daten selbst einlesen und auch selbst komprimieren. Kompressionsroutinen für Banks sollten sich finden lassen (Vertex hatte mal sowas gemacht, allerdings für BMax; vllt mal im BB.com Codearchiv schauen).
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard
Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium
Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2
  • Zuletzt bearbeitet von D2006 am Mi, Feb 11, 2009 18:39, insgesamt einmal bearbeitet

Goodjee

BeitragMi, Feb 11, 2009 18:38
Antworten mit Zitat
Benutzer-Profile anzeigen
nö...du musst doch nur 1024*768 bytes verschicken, das senden geht in einer sekunde, das empfangen wohl auch
"Ideen sind keine Coladosen, man kann sie nicht recyclen"-Dr. House
http://deeebian.redio.de/ http://goodjee.redio.de/

Tankbuster

BeitragMi, Feb 11, 2009 18:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Bei so großen Bildern muss man die Infos auf verschiedene Pakete verteilen, und dann senden. Jedes UDP-Paket kann maximal um die 65.000 Bytes groß sein Wink

Bei mehr, musst du dann natürlich ein paar Paketchen verschicken, aber mit 1-2 Sekunden kommt man auf jedenfall hin Wink
Twitter
Download Jewel Snake!
Windows|Android

Noobody

BeitragMi, Feb 11, 2009 18:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Da fehlt noch ein *3, weil ein Bild bekanntlicherweise 3 Farbkanäle besitzt Wink
Das sollte im Lan schon relativ flott gehen - übers Internet komprimieren die meisten Programme ihre Bilder bereits, wie schon von Dee angedeutet.
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun

Holzchopf

Meisterpacker

BeitragMi, Feb 11, 2009 18:45
Antworten mit Zitat
Benutzer-Profile anzeigen
[Klugschiss]Die effektive Maximalgrösse für UDP-Pakete ist in der Tat viel kleiner: Ich hab noch nie ein grösseres Paket als 2KB- UDP-Headergrösse (gibt etwas um die 2000Bytes) durch die Leitung gebracht.

Und Goodjee: *3, es sei denn, du willst nur n Graustufenbild[/Klugschiss]
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BYBinaryBorn - Yogurt ♫ (31.10.2018)
Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm
 

naibaf7

BeitragMi, Feb 11, 2009 18:46
Antworten mit Zitat
Benutzer-Profile anzeigen
hehe ok dann siehts dann so aus, dass ich das zeug komprimieren muss, mit irgendwelchen routinen, da mir das ansonsten zu sehr langsam ist

achja ich hab grad bemerkt, dass die verbindung weitaus nicht das grösste problem ist, sondern das "einlesen" der Buffer mit den Bildern darin! das dauert einfach ewigs, bis 1024x768 pixel gelesen sind!
My Pc:
MSI 790FX-GD70, Phenom X4 955BE, 2x2GB DDR3-1600, 8800GTS-512, WD 640GB + Samsung 160GB, Scythe Kaze Master

Eingeproggt

BeitragMi, Feb 11, 2009 18:57
Antworten mit Zitat
Benutzer-Profile anzeigen
ReadPixelFast
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9

ozzi789

BeitragMi, Feb 11, 2009 20:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn du B+ könntest du es mit DesktopBuffer versuchen, diesen Buffer könntest du runterskalieren und mit einer Libary als Png/jpg speicher und verschicken


mfg
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5

ToeB

BeitragMi, Feb 11, 2009 20:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Du kannst z.B. meine UDPLib aus dem Codearchiv nehmen oder die selber den netztwerk code schreiben, dann machst du folgendes :

Code: [AUSKLAPPEN]
img = ReadFile("Image.png")
While not eof(img)
byte = Readbyte(img)
WriteByte(UDPStream,byte)
Wend
CloseFile(img)


Oder mit meiner Lib :
Code: [AUSKLAPPEN]

img = ReadFile("Image.png")
strg$ = ""
While not eof(img)
byte = Readbyte(img)
strg = strg + byte+";"
Wend
UDP_Send(ID,strg)
CloseFile(img)
(natürlich sollte man auch den namen der datei mitschicken, hab ich jetzt nur nicht dazugeschrieben)

So einfach ist das... Dann wenn du eine nachricht krigst von einem der dir das bild (oder eine andere belibiege datei) schicken möchte, machst du das :

Code: [AUSKLAPPEN]
img = Writefile("Image.png")
While Not eof(UDPStream)
byte = ReadByte(UDPStream)
WriteByte(img,byte)
Wend
CloseFile(img)


und mit der lib gehts genau so nur das du zusätzlich noch StringParsing betreibene musst um die bytes aus der kette rauszulesen...

mfg ToeB
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!
 

naibaf7

BeitragMi, Feb 11, 2009 21:14
Antworten mit Zitat
Benutzer-Profile anzeigen
ok danke, ich habs jetzt so hingekriegt:
Programm 1:
-ein bild im vRAM erstellen
-ein rechteck aus dem desktopbuffer in den bildbuffer schreiben
-bildbuffer "lockbuffern"
-mit readpixelfast alles da raus kopieren und versenden
-bildbuffer "unlockbuffern"

Programm 2:
-ein bild im vRAM erstellen
-bildbuffer "lockbuffern"
-jeden Pixel ins bild schreiben
-bildbuffer "unlockbuffern"
-das bild zeichnen
My Pc:
MSI 790FX-GD70, Phenom X4 955BE, 2x2GB DDR3-1600, 8800GTS-512, WD 640GB + Samsung 160GB, Scythe Kaze Master

Starwar

BeitragMi, Feb 11, 2009 21:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Könntest du deinen Code bitte mal posten? Ich will sehn, wo ich meinen noch optimieren kann Very Happy Danke.

Tankbuster

BeitragMi, Feb 11, 2009 22:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich versteh nicht, warum ihr die Pixel eines Bildes auslesen wollt, und dann die RGB-Infos sendet. Es reicht doch völlig, die Datei Byte für Byte auszulesen, und dann einfach zu verschicken.

Das geht viel schneller, und man muss sich nicht extra eine Speicherroutine für ein paar Bildformate (Png, jpg) kümmern. Wink
Twitter
Download Jewel Snake!
Windows|Android

ZaP

BeitragMi, Feb 11, 2009 23:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Wieso immer bloß ein Byte, wenn in einem Paket doch mehr als genug Platz ist? Man muss das Netzwerk ja nicht gleich unnötig belasten.
Starfare: Worklog, Website (download)

Tankbuster

BeitragMi, Feb 11, 2009 23:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja Zap, das meinte ich auch (dürfte man wohl an meinem vorletzen Post sehen Wink )

Aber das ganze halt auf die Art und Weise zu machen würde doch viel Arbeit sparen ^-^
Twitter
Download Jewel Snake!
Windows|Android

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group