Gegeben zwei codierte Streams, ich möchte sie Seite an Seite beitreten. Wie ich annehme, habe ich zwei separate H.264-kodierte 1024x768 Videos mit der gleichen Bildrate. Ich möchte diese beiden so kombinieren, dass Video 1 und Video 2 nebeneinander liegen, um einen Stream mit der doppelten Breite (1024 * 2) × 768 oder 2048 × 768 zu bilden. Mein erster Versuch war, den Stream zu decodieren und die einzelnen Frames zu kombinieren, um dann den einzelnen Stream erneut zu codieren. Decoding und Reencoding sind in Ordnung und das funktioniert aber sehr langsam (wie ffmpeg). Das Problem scheint mit der Rechenzeit zu sein, Frames von YUV nach RGB zu konvertieren oder sie in ihrer YUV-Form zu kombinieren. Der Android-Decoder produziert YUV und die Mathematik, die verwendet wird, um Rahmen nebeneinander zu kombinieren, ist für dieses Formular intensiv. Also meine Frage ist;Anzeigen von Video-Frames nebeneinander nach dem Entschlüsseln (Android)
1) Gibt es eine schnellere oder effizientere Möglichkeit, Frames zu kombinieren, wenn sie in YUV-Form vorliegen?
2a) Wenn nicht, ist es viel schneller, sie zu kombinieren, wenn sie stattdessen in RGB-Form vorliegen?
2b) Wenn ja, wie würde ich einen H.264-Stream in RGB-Frames in Android decodieren?
P.S. Versuchtes ffmpeg und openCV erfordern beide die YUV zu RGB Umwandlung, die es extrem langsam macht (~ 5fps)
Danke!
Verwenden Sie die API oder die Befehlszeile? – WLGfx
API, aber verwendete Befehlszeile beim Testen mit ffmpeg –
Der schnellste Weg wäre, die YUV-Puffer groß genug für beide Frames zu erstellen und die Daten selbst zu kopieren, bevor sie an den Encoder übergeben werden, ohne dass RGB in RGB konvertiert werden muss. – WLGfx