Jak utworzyć wtyczkę stagefright
Mam zadanie, które polega na integracji dekodera wideo z Stagefright
(framework multimedialny Androida). Szukałem i znalazłem następujące informacje o tworzeniu nowego pluginu dla Stagefright
:
Aby dodać obsługę nowego formatu, musisz:
Opracowanie nowej klasy ekstraktora, jeśli kontener nie jest jeszcze obsługiwany.
Stworzenie nowej klasy dekodera, która implementuje interfejs potrzebny rdzeń
StageFright
do odczytu data.Połącz typ MIME plików do odczytu z nowym dekoderem w pliku
OMXCodec.cpp
, w tablicykDecoderInfo
.
static const CodecInfo kDecoderInfo[] = {
{MEDIA_MIMETYPE_AUDIO_AAC, "OMX.TI.AAC.decode"},
{MEDIA_MIMETYPE_AUDIO_AAC, "AACDecoder"},
};
Powyższe dane to wszystko, co udało mi się znaleźć w sieci. W tej chwili mam prostą aplikację, która weźmie plik jako wejście i renderuje go na ekranie za pomocą natywnego API w Androidzie. Czy ktoś może mi powiedzieć, jak postępować dalej? A skąd się biorą te wszystkie OMXCodec.cpp
i inne i który Katalog mojego projektu powinienem mieć weszli. Proszę podać rozwiązania dotyczące tego samego. Z góry dzięki.
1 answers
Z twojego pytania wynika, że patrzysz na rekomendację, która jest specyficzna dla Ice-Cream Sandwich
lub wcześniejszych wersji Androida. Pierwszą rzeczą, o której powinieneś być jasny, jest wersja Androida tj. {[0] } lub przed lub JellyBean
i po. Integracja kodeków jest inna w różnych wersjach Androida.
Skomentowałem już twoje inne pytanie, które jest specyficzne dla JellyBean
i Później (Referencja: Android: jak zintegrować dekoder do multimedia framework )
Jeśli chcesz zintegrować kodek w Ice-Cream Sandwich
lub wcześniej, kroki są już dostępne w twoim pytaniu. Oprócz dodania dekodera do listy kDecoderInfo
, możesz ustawić pewne dziwactwa, jak pokazano tutaj .
Do pytania na OMXCodec.cpp
, można znaleźć ten plik na
{[7] } W przypadku Ice-Cream Sandwich
i frameworks/av/media/libstagefright/
w przypadku JellyBean
.
Jeśli wykonałeś wszystkie kroki, aby zintegrować Dekoder wideo z frameworkiem Stagefright
, to najprostszym testem byłoby wykonanie następujących czynności:
-
Skopiuj plik multimedialny na kartę SD
W
OMXCodec.cpp
włącz logi, usuwając komentarz w tej instrukcji//#define LOG_NDEBUG 0
i uruchommm
w katalogu. Skopiuj przebudowanylibstagefright.so
do/system/lib
na urządzeniu.Włącz
logcat
i rozpocznij przechwytywanie dzienników.Przejdź do galerii, Wybierz swój plik i pozwól standardowemu odtwarzaczowi odtworzyć Twój plik.
Sprawdź swój dziennik plik, jeśli gracz wybrał Twój komponent
OMX
, wyszukując jego nazwę. Jeśli zostanie znaleziony, integracja kodeka zStagefright
zakończy się sukcesem. W przeciwnym razie będziesz musiał debugować i dowiedzieć się, na czym polega problem.
Postscriptum:
Bazując na Twoich zapytaniach, zakładam, że nie znasz źródeł Androida. Zapoznaj się z dystrybucją androidxref.
Chyba, że jesteś planując obsługę nowego formatu plików multimedialnych, nie będziesz musiał obsługiwać klasy
Extractor
.MediaExtractor
abstrakcja parsera formatu pliku i pomaga de-multipleksować różne ścieżki w pliku multimedialnym.
Mam nadzieję, że dzięki tej informacji, powinieneś być w stanie uzyskać kodek zintegrowany i funkcjonalny w Androidzie.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:53:08