FPV Wifi Broadcasting HD Video - Thread zum Raspberry HD Videolink von Befi

Status
Nicht offen für weitere Antworten.

moritzz06

Erfahrener Benutzer
Den analogen Ausgang habe ich aktiviert, das war ja tatsächlich ganz einfach :) Habe zwar das Gefühl es ruckelt etwas, aber um die Latenzauswirkungen im Flug zu checken sollte es erst mal reichen.

Wie kann ich denn das Startskript editieren? Ich habe die beiden Images installiert und kann aber kein "RunTx.sh" Datei finden..
Habe mit find schon alles durchsucht..

Edit: Habe die Datei gerade gefunden. Sie liegt im Ordner /bin/bash und heißt runwifibroadcast.sh
 
Zuletzt bearbeitet:

moritzz06

Erfahrener Benutzer
Leider hat die Freude nicht lange angehalten, jetzt startet nichts mehr :( nach dem Einfügen von -hflip um das Kamerabild auf den Kopf zu stellen funktioniert vermutlich das TX autorun Skript nicht mehr.. Muss ich wohl noch mal ran.

Nachdem ich die Frames von 30 auf 48 gesetzt und die Bitrate auf 4500000 erhöht habe brauche ich vermutlich auch kein Analogtest mehr. Da ist ja kaum noch eine Latenz zu sehen/spüren :cool:

Hat schon mal jemand getestet ob man einen unterschied zwischen 1280x720 und 1024x600 in der Latenz merkt? Wäre eine Überlegung doch den etwas niedriger auflösenden Pollin Monitor zu nehmen..
 
Ich stelle hier nochmal ein bisschen Code der "hello_video.c" Datei rein, damit kann man an der Ausgabe etwas rumtricksen, vor allem skalieren, rotieren oder den Render Layer ändern.

Der Code wird z.B. nach der Zeile "format.xFramerate =..." eingefügt.
Die meisten Optionen sollten selbsterklärend sein, ansonsten einfach mal nach den einzelnen Parametern googeln.
Ich plane, das Bild für die Brille etwas zu verkleinern, d.h. ich sende z.b. mit weniger als der nativen Auflösung und kann das Bild dann nicht fullscreen sondern entsprechend mit den dest. offsets in die Mitte verschieben.

Code:
format.xFramerate = 60 << 16;

 OMX_CONFIG_DISPLAYREGIONTYPE configDisplay;
   memset(&configDisplay, 0, sizeof(OMX_CONFIG_DISPLAYREGIONTYPE));
   configDisplay.nSize = sizeof(OMX_CONFIG_DISPLAYREGIONTYPE);
   configDisplay.nVersion.nVersion = OMX_VERSION;
   configDisplay.nPortIndex = 90;
   configDisplay.fullscreen = OMX_FALSE;
   configDisplay.noaspect   = OMX_TRUE;

   configDisplay.transform = OMX_DISPLAY_ROT180;
//   configDisplay.layer	= 2;
   configDisplay.set = (OMX_DISPLAYSETTYPE)(OMX_DISPLAY_SET_DEST_RECT|OMX_DISPLAY_SET_SRC_RECT|OMX_DISPLAY_SET_FULLSCREEN|OMX_DISPLAY_SET_NOASPECT|OMX_DISPLAY_SET_TRANSFORM);
// configDisplay.set = (OMX_DISPLAYSETTYPE)(OMX_DISPLAY_SET_FULLSCREEN|OMX_DISPLAY_SET_NOASPECT|OMX_DISPLAY_SET_TRANSFORM);
//   configDisplay.layer   = 2;   // OMX_SET_LAYER
   configDisplay.transform = OMX_DISPLAY_ROT180;
   configDisplay.dest_rect.x_offset  = 104;
   configDisplay.dest_rect.y_offset  = 100;
   configDisplay.dest_rect.width     = 1072;
   configDisplay.dest_rect.height    = 600;
   configDisplay.src_rect.x_offset   = 0;
   configDisplay.src_rect.y_offset   = 0;
   configDisplay.src_rect.width      = 1072;
   configDisplay.src_rect.height     = 600;
 
Zuletzt bearbeitet:

sandmen

Erfahrener Benutzer
450m hören sich doch scho viel besser an :). Ich denke wenn man noch etwas mit der Bitrate oder gar Auflösung runtergeht kommt man da noch etwas weiter. Ich frage mich gerade ob es nicht irgend wie auch auf dem R36 lauffähig wäre um den mit openWRT als empfänger zu nutzen. Dieser wäre noch etwas empfindlicher, somit sollte nochmals ein gutes stück mehr reichweite möglich sein.
Hab es schon unter openWRT am laufen. Relative einfach ein Packet zu erstellen.

Wie "messt" Ihr den die vorhandene Latenz ?
Ich lese momentan nur ca., gefühlt usw. könnte mal jemand bitte ein paar pic's einstellen, wo man die Latenz sieht ( Stopwatch-Screen shoot )
Und gibt es sichtbaren/messbaren Unterschied in der Latenz zwischen dem Monitor-mode UDP und normalen UDP ?
Momentan kann ich mir es nicht wirklich vorstellen, das es mehr als ein paar ms bringt.
Reichweite mit Sicherheit mehr, aber weniger Latenz....
 

aargau

Erfahrener Benutzer
Hab es schon unter openWRT am laufen. Relative einfach ein Packet zu erstellen.

Wie "messt" Ihr den die vorhandene Latenz ?
Ich lese momentan nur ca., gefühlt usw. könnte mal jemand bitte ein paar pic's einstellen, wo man die Latenz sieht ( Stopwatch-Screen shoot )
Und gibt es sichtbaren/messbaren Unterschied in der Latenz zwischen dem Monitor-mode UDP und normalen UDP ?
Momentan kann ich mir es nicht wirklich vorstellen, das es mehr als ein paar ms bringt.
Reichweite mit Sicherheit mehr, aber weniger Latenz....
Hört sich doch gut an. Nehme an du leitest die Pakete dann einfach via UDP ins Netzwerk weiter? Muss ich auch mal testen, als Empfänger müsste ja eigentlich eh jedes Chipset gehen der den Monitormode beherscht, da braucht es doch keine "Mods"?
 

sandmen

Erfahrener Benutzer
Ich "spiele" gerade mit einem HW-h264 encoder.
Zum Kommunizieren nehme ich einen embedded Wifi router.
Zum testen habe ich Befi's code als Package für OpenWRT erstellt.

Nachteil ist halt, Du kannst am Boden "fast" nur spezielle HW nehmen.
Normalerweise müssten man das auch auf Windows hin bekommen.
Unter Android, fast keine Change, und auch für iOs geht wohl der Monitor mode nur sehr schwierig.

Vorteil von Monitor mode ist halt der verbesserte Empfang.
Ob das für die Latenz etwas bringt, habe ich noch nicht getestet.
Vielleicht macht ja jemand noch vergleichstest's "normaler" UDP stream und "monitor" UDP stream.
Ich werde es mir auf jeden Fall die Tage anschauen...

Ich bin so auch bei 80-200ms Latenz bei 1080i30, und noch etwas unoptimierten encoder.
Bei 720p, sollten die 80ms auf Dauer drin sein.

Hier mal ein pic vom HW-encoder mit HDMI in und WIFI modul on board.
Ist noch Proto...
 

Anhänge

chrissi

Erfahrener Benutzer
Ich sage mal so, echte 720p auf guter Brille würde ja vollkommen ausreichen! Mehr geben die ja eh nicht her...eher im Gegenteil! Klasse Umsetzung! Leider bin ich zu blöd für sowas! :D
 

aargau

Erfahrener Benutzer
Das hört sich cool an, HDMIin wäre natürlich das absolute nunPlusultra. So könnte man endlich auch Kamerakopter so anschliessen.
Was kostet dich denn der HW-encoder? Ist der komplett von dir designet oder kann man den irgend wo als fertiger Baustein kaufen?

Das heisst du nimmst den Encoder, gehst via Wlan? auf einen Wifi Router, sendest dann von dort die pakete als RAW Daten und am Boden nimmst du diese wieder mit einem Router auf welcher im Monitor mode lauscht?

Meine Idee wäre es, einfach die Pakete via netcat oder ähnlichem am Boden wieder in IP Pakete zu wandeln, so könnte man dann ja via LAN auf jeden beliebigen Rechner gehen und wäre sogar plattform unabhängig, da es ja ab dann wieder "normale" UDP Pakete wären.

Ich sehe schon, da wird sich in kommender Zeit noch einiges tun und preislich eine Lightbridge weit in den Schatten stellen.
 

sandmen

Erfahrener Benutzer
Encoder und Router siehst Du oben, ist alles bereits oben angeschlossen.
Man kann verschieden Adapterplatinen theoretisch designen.
Signal weg die ich momentan am testen bin:
Encoder -> Lan in Router -> netcat redirect -> Wifi -> zur Groundstation -> Android bereits möglich (250ms Latenz bei 1080i)

Encoder -> Lan in Router -> Befi's Monitor mode -> Wifi -> zur Groundstation -> Irgend-ein System das Monitor mode kann -> noch nicht getestet, aber tx packet bereits für OpenWRT kompiliert, und getestet.

Encoder -> Bridge between LAN & Wifi -> zur Groundstation -> Android, mplayer usw. funktioniert. (mplayer 100ms, Android 150-200ms)

Nein ist nicht von mir designt. Den kann man bald kaufen.
Wegen dem Preis, will ich mich nicht fest machen aber ~400€.

Gruß
 

action

Erfahrener Benutzer
Hallo Zusammen, ich bin jetzt auch dabei.

Heute eingetroffen:

RPI 2 für Groundmodul ( stärkeren genommen um eventuelle Dienste paralell auszuführen
RPI a+ für Airmodul
RPI WideLens Kamera
0.75m Flachbandkabel
TL-WN722N 3 Stück 2x Boden 1x Air
10.1 Zoll Conrad HDMI Bildschirm (leider ist die Auflösung nicht 720 sondern was mit 600Pixel :-/
TP-Link Patch Antenne

Alles zusammen 265 Franken ( Euro )

Leider habe ich die Speicherkarten vergessen :p und kann erst gegen Wochenende alles konfigurieren.

Kann mir einer sagen wie ich den A+ mit nur einem USB Port konfigurieren kann? Entweder häng ich da ja nen USB-LAN Adapter ran, oder den WLAN Stick, oder muss ich mir nen HUB für die Konfiguration zulegen?

Gruss
 
Zuletzt bearbeitet:
Den a+ kannst du am besten mit putty über ein serielles terminal bedienen. Du brauchst dafür nur einen ftdi adapter. Den gibts dür 5-10€ bei ebay. Auf die 3.3v tauglichkeit achten und einstellen.
Ein usb lan adapter ist natürlich auch ne möglichkeit, mit hub muss man dann nicht umstöpseln.
 

kinderkram

Erfahrener Benutzer
Kann mir einer sagen wie ich den A+ mit nur einem USB Port konfigurieren kann? Entweder häng ich da ja nen USB-LAN Adapter ran, oder den WLAN Stick, oder muss ich mir nen HUB für die Konfiguration zulegen.
Ich hab mir nen aktiven USB Hub zugelegt und alles daran angeschlossen: Tastatur, Maus, Wifi Stick.
Erst danach hab ich erfahren, dass es fertige Images gibt, die man einfach auf die SDs flashen kann - simpler gehts nich...
 
Status
Nicht offen für weitere Antworten.
FPV1

Banggood

Oben Unten