Ich arbeite seit ein paar Wochen immer mal wieder (im Kopf) an einer "All in One" Lösung. Es gibt halt zwei einander widerstrebende Anforderungen unter einen Hut zu bringen: Einerseits möglichst viele Daten auf engem Raum ("Bandbreite"), andererseits möglichst geringe Latenz. Je mehr Kompressionsarbeit zu leisten ist (speziell mit dem Wunsch hoher Bildqualität), desto höher wird notgedrungen die Latenz (das Standardproblem bei MPEG ist, dass MPEG eben gerade STREAMS komprimiert, also einige Bilder hintereinander braucht, um überhaupt komprimieren zu können - würde man nur i-Frames übertragen, könnte man gleich JPEGs senden, was man dann als MJPEG bezeichnen kann - und was auch die Lösung ist, die ich anstrebe).
MPEG hat mehrere grundsätzliche Nachteile für FPV: Zum einen die angesprochene, "immanente Latenz", die man grundsätzlich nicht vermeiden kann (ohne damit automatisch von MPEG wegzukommen), zweitens die Zahl der i-Frames, die man relativ hoch ansetzen muss, um abreißende Streams abzufangen (was zum selben Ergebnis führt wie die Reduzierung der Latenz durch kurze Streambuffer: Man sendet quasi Einzelbilder).
Da ich einige Jahre lang gut davon gelebt habe, automatisierte Bildverarbeitungssysteme zu entwickeln, kann ich mir vorstellen, eine Stream-Komprimierung selbst zu schreiben, die etwas besser als MJPEG ist. Es bleibt aber auch dann das Problem der Bandbreite: Will man, wie ich, dasselbe gestreamte Signal sowohl für Live-View als auch für die Aufzeichnung verwenden, braucht man wenigstens D2 Auflösung (ergibt ca. 24MB/sec für 25 Frames ohne Kompression, im Idealfall bei MJPEG also immer noch deutlich über 2MB/sec - wo soll man die unterbringen, ohne dass es zu ständigen Aussetzern kommt UND die Reichweite auf deutlich unter 300m eingeschränkt bleibt?).
Kurzum: Das Thema ist sehr, sehr spannend - und leider nicht trivial. Ich würde mich gerne mit ernsthaft Interessierten intensiv dazu austauschen (aber bitte nicht hier im Forum).
Marc
P.S. Eine einfache Überlegung zur Frage der glaubwürdigen Latenz ohne spezialisierte Codecs: Ein Frame bei 25 Bildern pro Sekunde ist 40ms lang. Zwei Frames also schon 80ms. Für eine streambasierte Kodierung sind zwei Frames eigentlich noch zu wenig, das heißt, dass man rein logisch bereits bei 120ms minimaler Latenz ist, die Zeit für Kodierung und Dekodierung nicht gerechnet. Wer also eine einfache streambasierte Lösung mit Latenzen von 100ms anbietet, versteht unter Latenz etwas anderes als ich
