Backport stagefright i NuPlayer do Androida 2.2
Moim wymaganiem jest możliwość odtwarzania strumienia wideo na żywo w mojej aplikacji na Androida. Strumień będzie przesyłany przez RTSP / RTP. Nie mam kontroli nad źródłem; wygląda na to, że ładunek RTP nie spełnia wymagań opisanych w Przewodniku programistówZalecenia dotyczące kodowania wideo. W szczególności następujące źródło wydaje się być naruszone przez źródło wideo:
W przypadku kontenerów 3GPP i MPEG-4 atom moov musi poprzedzać atomy mdat, ale musi zastąpić atom ftypu
Zasadniczo wygląda na to, że otrzymujemy surowe dane H264 (nie zawinięte w pojemniku).
Teraz,
Nie mogłem odtworzyć tego strumienia za pomocąMediaPlayer
klasa na Android 2.2 Samsung Galaxy Tab.Udało mi się jednak zagrać na Android 2.3 Samsung Galaxy S.Niektóre aplikacje innych firm (MX Player) były w stanie odtwarzać ten sam strumień także na karcie Galaxy 2.2.W obu przypadkach 2 i 3 powyżej dzienniki DDMS wskazywały na fakt, że framework Stage Fright był używany wewnętrznie, podczas gdy w przypadku 1 wykorzystywano PVP (tj. OpenCore). Wszystko to prowadzi mnie do wniosku, że:
Mój strumień nie może być odtwarzany przez framework OpenCore.Mój strumień można odtwarzać za pomocą Stagefright - nawet na Androidzie 2.2Co prowadzi mnie do mojego pytania:
Na czym polega przenoszenie stagefright do Androida 2.2?
Ponadto zauważyłem w źródle AOSP, że nowszeNuPlayer
jest teraz odpowiedzialny za odtwarzanie strumieni RTSP. Pytanie:
NuPlayer
powrót do starszych wersji Androida (2.2 lub 2.3)?Jeśli tak, co muszę zrobić, aby móc z niego korzystać w mojej aplikacji?Wiem, że mogę sprawdzić źródła i używać NDK do budowania stagefright i NuPlayer (choć nigdy nie pracowałem na poziomie NDK). Nie wiem jednak, w jaki sposób moja aplikacja może używać tego NuPlayera.