2013-04-29 19 views
5

Pracuję nad projektem, w którym musimy nagrać renderowaną powierzchnię OpenGL. (na przykład, jeśli używamy GLsurfaceView, musimy nagrać powierzchnię wraz z dźwiękiem MIC)Nagrywanie wideo w systemie Android powierzchni OpenGL (GLSURFACEVIEW)

Obecnie używam MediaRecorder API, ustawiając źródło wideo na VIDEO_SOURCE_GRALLOC_BUFFER.

Używam następujący sample jako kodu bazowego

chciałem wiedzieć ....

  1. Czy to właściwa droga? . Czy jest jakiś lepszy zastępca?
  2. Test przykładowy podany w łączu rejestruje audio i wideo EGLSURFACE, ale nie jest wyświetlany prawidłowo.

Jaki może być tego powód?
Każda pomoc/wskazówki są naprawdę cenne.

Dzięki,
Satish

Odpowiedz

6

Kod odwołać nie jest próbką, lecz wewnętrzny kod test, który sprawuje interfejs niepublicznych. SurfaceMediaSource może zmienić lub zniknąć w przyszłej wersji i złamać kod.

Aktualizacja: Android 4.3 (API 18) umożliwia Surface input do MediaCodec. Próbka EncodeAndMuxTest demonstruje zapisanie klatek OpenGL ES do pliku .mp4.

Klasanie przyjmuje wejścia Surface, więc w twoim przypadku musisz oddzielnie nagrać audio, a następnie połączyć go z nową klasą MediaMuxer.

Aktualizacja # 2: Android 5.0 (API 21) umożliwia Surface input do MediaRecorder, który jest często o wiele bardziej wygodne niż MediaCodec. Jeśli zamierzasz korzystać z MediaCodec, istnieje przykład pokazujący trzy różne sposoby rejestrowania wyjścia OpenGL ES za pomocą tego parametru w Grafika's "zapisywanie aktywności GL".

Klasa MediaProjection może być również przydatna przy nagrywaniu ekranu.

+0

Witam, dzięki za informację. W tej chwili postępujemy z glreadpixel, który zmniejsza FPS. –

Powiązane problemy