Ein 4K-Frame enthält mehr als acht Millionen Pixel. Wenn man jede Sekunde 30 dieser Bilder ohne Komprimierung sendet, entsteht ein sehr großer Datenstrom.USB-Kamera-Module verwenden daher oft MJPEG, da die JPEG-Komprimierung die Datenmenge reduziert, die über den USB-Anschluss verlaufen muss.
USB2.0 hat viel weniger praktische Bandbreite als USB3.x. Selbst auf USB3.x können unkomprimierte High-Bit-Rate-Modi mit anderen Geräten und Host-Controller-Limits konkurrieren.MJPEG ermöglicht es derselben physikalischen Schnittstelle, eine höhere Auflösung oder Bildrate zu übertragen, indem die Anzahl der Bytes pro Bild reduziert wird.
Im Gegensatz zu langen GOP-Video-Codecs wie H.264/H.265, MJPEG komprimiert einzelne Bilder als JPEG-Bilder. Dies macht den Zufalls-Framenzugriff relativ einfach und vermeidet Abhängigkeiten zwischen den Bildern.dass Einfachheit nützlich ist, obwohl Komprimierung Artefakte bleiben.
Die Komprimierung führt nicht dazu, dass Daten verschwinden, sondern verlagert die Arbeit an einen anderen Ort.Ein schwacher eingebetteter Prozessor kann mit mehreren 4K MJPEG-Streams kämpfen, auch wenn der USB-Bus sie tragen kann.
Bei Mehrkamerasystemen ist sowohl die USB-Auslastung als auch die CPU/GPU-Decodierungslast zu messen.
Der Host muss dennoch den Modus verhandeln, den Stream empfangen, Frames entschlüsseln und in den Speicher verschieben.Die Qualität des Kabels und die gemeinsame Nutzung des USB-Controllers können ebenfalls die dauerhafte Leistung beeinträchtigen.
Eine Spezifikation sollte auf dem Endhost verifiziert werden, anstatt von einem erfolgreichen Test auf einem Desktop-PC auszugehen.
Wenn ein Algorithmus empfindlich auf JPEG-Artefakte reagiert, konsistente Pixelwerte benötigt oder Decoder-Latenz vermeidet, kann YUY2 oder ein anderer unkomprimierter/roher Pfad bevorzugt werden.niedrigere Auflösung, kann eine geringere Bildrate oder eine andere Schnittstelle erforderlich sein.
Vergleichen Sie die Modustabelle: Auflösung, Bildrate und Format. Überprüfen Sie dann die USB-Version, die decodierende Last des Hosts, die Latenz und ob die Anwendung jeden Bildformat verarbeitet.Ein Modul mit Werbung 4K30 kann sich sehr unterschiedlich verhalten, je nachdem, ob dieser Modus MJPEG ist, H.264 oder ein anderes Format.
Eine einzelne 4K30 MJPEG-Kamera kann zuverlässig auf einem Host streamen, aber vier identische Kameras können USB-Topologie oder Decoder-Ressourcen überwältigen.Das kombinierte System muss noch vier Ströme empfangen und entschlüsseln.Das Multi-Camera-Design erfordert daher aggregierte Messungen, nicht eine Annahme pro Kamera.
Die vollständige Anweisung sollte Format und Schnittstelle enthalten: zum Beispiel 3840×2160 bei 30 fps in MJPEG über eine bestimmte USB-Verbindung.Diese Lesegewohnheit verhindert viele Auswahlfehler.
Es ist ein Verlustkomprimierungsformat, also sind Artefakte möglich.
H.265 kann effizienter komprimiert werden, fügt jedoch Codec-Komplexität und oft mehr Latenz hinzu.
Es kann für einige Formate und Implementierungen möglich sein, aber die genaue Datenrate, Protokollüberlastung und Host-Pipeline müssen überprüft werden.