Ich habe ein Array von RGB-Daten von glReadPixels() generiert.
Beachten Sie, dass RGB-Daten pixelgepackt sind (r1, g1, b1, r2, g2, b2, ...).Wie schreibe ich YUV 420 Video Frames von RGB-Daten mit OpenCV oder anderen Bildverarbeitungs-Bibliothek?
Wie kann ich schnell einen YUV-Videoframe mit OpenCV oder einer anderen C++ - Bibliothek schreiben, sodass ich sie zu FFMPEG streamen kann? Das Konvertieren von RGB-Pixeln in YUV-Pixel ist kein Problem, da viele Konvertierungsformeln online verfügbar sind. Allerdings ist das Schreiben des YUV-Frames das Hauptproblem für mich. Ich habe seit den letzten Tagen versucht, den YUV-Videoframe zu schreiben und war dabei nicht erfolgreich.
Dies ist eine meiner anderen Frage über das Schreiben YUV-Frame und die Probleme, die ich begegnete: Issue with writing YUV image frame in C/C++ Ich weiß nicht, was ist falsch mit meinem aktuellen Ansatz beim Schreiben der YUV-Frame in eine Datei.
Jetzt möchte ich vielleicht vorhandene Bibliothek (falls vorhanden) verwenden, die eine RGB-Daten akzeptiert, und konvertieren Sie sie in YUV und schreiben Sie den YUV-Frame direkt in eine Datei oder eine Rohrleitung. Natürlich wäre es viel besser, wenn ich mein vorhandenes Programm reparieren könnte, um den YUV-Frame zu schreiben, aber Sie wissen, es gibt auch einen Termin in jedem Software-Entwicklungsprojekt, also ist Zeit auch eine Priorität für mich und meine Projektteammitglieder.
Haben Sie swscale in FFMPEG versucht? Konvertieren von Pixelformat und Skalieren von Bildern mit swscale benötigt nur 3 Zeilen Code. – BlueWanderer
Warum müssen Sie YUV Daten zu FFmpeg streamen? Warum füttern Sie nicht einfach die RGB-Daten? – TheJuice
Zum Schreiben eines YUV-Rahmens ist keine Bibliothek erforderlich. Sie haben gesagt, Sie können die RGB-Daten in Y, U und V konvertieren. Schreiben Sie diese Daten einfach in eine Datei in der gleichen Reihenfolge. Sie können das U & V-Subsampling durchführen, indem Sie die alternativen Werte verwenden. Dann brauchen Sie nur einen guten YUV-Player, um diese Datei anzuzeigen. Ich habe das mehrere Male gemacht, es ist sehr einfach. – nac