2013-04-15 21 views
5

Zostałem poproszony o wyświetlenie strumienia wideo (strumień nie pochodzi z HTTP) w Androidzie, strumień jest surowy H.264, który jest nagrany i zakodowany na komputerze, i dostaję to przez WIFI.Jak używać klasy MediaCodec do dekodowania strumieni H.264

Kiedy otrzymam strumień, można użyć dekodera MediaCodec do dekodowania strumienia i wyświetlenia go?

Odpowiedz

0

patrz zalecenia kodowania wideo here

1

Tak. Skonfiguruj MediaCodec jako dekoder "video/AVC" i przekaż Wyjściową Powierzchnię do wywołania configure().

Interfejs MediaCodec API jest dość niskiego poziomu i nie ma zbyt wiele przykładowego kodu. Zamiast tego może być łatwiej używać MediaPlayer.

Aktualizacja: Istnieje teraz garść przykładowego kodu here. Większość z nich korzysta z funkcji Androida 4.3 (API 18), ale jeśli nie potrzebujesz MediaMuxer lub wejścia Surface do MediaCodec, będzie działać na API 16.

+0

Ale nie mogę znaleźć sposobu na poradzenie sobie z H. 264 strumień z MediaPlayer.. Ideały? – ljfxmu

+1

Pozwólcie mi cofnąć się o krok. Czym dokładnie jest format - podstawowy strumień, PES, ...? MediaCodec akceptuje dane strumienia podstawowego, ale nie akceptuje go jako strumienia *; wymaga serii "jednostek dostępu", więc jeśli jest to elementarny strumień, musisz zachować lub odzyskać granice "pakietów". Musisz również upewnić się, że pierwszy bufor przekazany ma potrzebne informacje o kodeku, które nie są obecnie udokumentowane. Najlepszym rozwiązaniem może być konwersja strumienia z komputera na coś, z czym MediaPlayer może sobie poradzić. – fadden

Powiązane problemy