Medya ayıklayıcıyı ve medya codec'i bileşenlerini tedarikçi firma ile genişletebilirsiniz.
uzantılar. MediaSession2 ve MediaParser API'leri özelleştirilemez (ancak eski MediaPlayer
ve MediaSession
API'leri için değişiklikleri yayına alabilirsiniz).
Android medya çerçevesinde ek medya türlerini desteklemek için şunları yapmanız gerekir: özel bir ayıklayıcı ve kod çözücü oluşturun. Örneğin, AVI dosyalarında Windows Media video desteği eklemek için bir AVI ayırıcı ve Windows Media video kod çözücü oluşturmanız gerekir.
Uzantılar hakkında
Varsayılan medya ayıklayıcılar gereksinimlerinizi karşılamıyorsa /system/lib[64]/extractors/
içine özel ayıklayıcı eklentileri yerleştirebilirsiniz. Ayıklayıcı işlemi, Google tarafından sağlanan APEX paketinden ve /system/lib[64]/extractors/
'ten ayıklayıcı eklentilerini otomatik olarak yükler.
Benzer şekilde, Codec 2.0 kullanan özel medya codec hizmetleri oluşturabilirsiniz
arayüz, frameworks/av/media/codec2/core/
adresinde tanımlanmıştır. Temel
için frameworks/av/media/codec2/hidl/services/
bakın. Kitaplık giriş noktası C2ComponentStore
arayüzüdür. Örnek olarak, frameworks/av/media/codec2/vndk/C2Store.cpp
adresindeki varsayılan yazılım codec'i mağazası uygulamasına bakın.
Kendi APEX'inizi kullanırken codec hizmetini yapılandırın ve APEX dosyasını yükleyin.
mediaswcodec
hizmetiyle aynı işlemleri kullanır. Bunu yapmak için,
tüm C2 bileşenlerini kaydetmekten sorumlu üst düzey paylaşılan kitaplık,
tedarikçi firmada yer alan bir APEX paketi (geçişli bağımlılara sahip) oluşturmanız gerekir.
bölüm. Tedarikçi codec hizmeti işlemi başladığında bu üst düzey giriş noktasını yükleyebilir.
Ayıklama aracı oluşturma
Yeni bir biçim için çıkarıcı eklerken çıkarıcı yalnızca kararlı NDK API'lerine bağlı olduğundan ve herhangi bir özel API'ye bağlı olmadığından emin olun. Ayıklayıcılar
API'yi uygulamak için
frameworks/av/include/media/MediaExtractorPluginApi.h
ve C++ kullanabilir
elinizin altındaki
frameworks/av/include/media/MediaExtractorPluginHelper.h
. Çünkü Android
10 veya sonraki sürümler yalnızca
ayıklayıcı API'sını kullanıyorsanız ayıklayıcınızı
en yüksek API sürüm numarası.
/system/lib/64/extractors
veya bir tedarikçi APEX'e özel ayıklayıcılar yerleştirin,
Google ayıklayıcılarını içeren Google APEX ile birlikte açılır. Alıcı:
ayıklayıcınızı yüklediğini doğrulayın ve aşağıdaki komutu çalıştırın.
adb shell dumpsys media.extractor
Aşağıdakine benzer kullanılabilir ayıklayıcıların bir listesini alırsınız.
Available extractors:
AAC Extractor: plugin\_version(2), uuid(4fd80eae03d24d729eb948fa6bb54613), version(1), path(/system/lib64/extractors/libaacextractor.so)
AMR Extractor: plugin\_version(2), uuid(c86639c92f3140aca715fa01b4493aaf), version(1), path(/system/lib64/extractors/libamrextractor.so)
FLAC Extractor: plugin\_version(2), uuid(1364b048cc454fda9934327d0ebf9829), version(1), path(/system/lib64/extractors/libflacextractor.so)
MIDI Extractor: plugin\_version(2), uuid(ef6cca0af8a243e6ba5fdfcd7c9a7ef2), version(1), path(/system/lib64/extractors/libmidiextractor.so)
MP3 Extractor: plugin\_version(2), uuid(812a3f6cc8cf46deb5293774b14103d4), version(1), path(/system/lib64/extractors/libmp3extractor.so)
MP4 Extractor: plugin\_version(2), uuid(27575c6744174c548d3d8e626985a164), version(2), path(/system/lib64/extractors/libmp4extractor.so)
MPEG2-PS/TS Extractor: plugin\_version(1), uuid(3d1dcfebe40a436da574c2438a555e5f), version(1), path(/system/lib64/extractors/libmpeg2extractor.so)
Matroska Extractor: plugin\_version(2), uuid(abbedd9238c44904a4c1b3f45f899980), version(1), path(/system/lib64/extractors/libmkvextractor.so)
Ogg Extractor: plugin\_version(2), uuid(8cc5cd06f772495e8a62cba9649374e9), version(1), path(/system/lib64/extractors/liboggextractor.so)
WAV Extractor: plugin\_version(3), uuid(7d61385858374a3884c5332d1cddee27), version(1), path(/system/lib64/extractors/libwavextractor.so)
Özel çıkarıcınız, Google tarafından sağlanan bir çıkarıcı tarafından zaten desteklenen bir biçimi destekliyorsa Google tarafından sağlanan çıkarıcıdan daha yüksek bir güven düzeyi döndürmek için Sniff()
işlevini kullanarak çerçeveyi çıkarıcınızı kullanmaya zorlayabilirsiniz.
Medya çerçevesi, ayıklayıcınızı (/system/lib/64/extractors
veya bir tedarikçi APEX'ten) yüklediğinde dosyayı tanır ve içeriği hakkında bilgi alır. Sıradaki adım, biçim için bir kod çözücü eklemektir. Böylece çerçeve
nasıl ayrıştıracağınızı öğreneceksiniz.
Özel kod çözücü oluşturma
Google tarafından sağlanan bir kod çözücü tarafından desteklenmeyen tüm biçimler için özel bir kod çözücüye ihtiyacınız vardır. Örnek:
MP3 içeren AVI dosyalarına medya çerçevesi desteği eklemek için AVI'ye ihtiyacınız vardır ancak halihazırda mevcut olduğundan MP3 kod çözücüye gerek yoktur.
Windows Media içeren AVI dosyalarına medya çerçevesi desteği eklemek için hem AVI ayıklayıcı hem de Windows Media kod çözücü gerekir.
Yeni bir kod çözücü eklemek, AVC veya AVC için kendi donanım kod çözücülerinizi eklemeye benzer. HEVC.
Ayıraç, içerdiği medya parçalarının MIME türünü yayınlasa da dosyanın tam olarak desteklenmesi için bu MIME türlerini destekleyen codec'lerin mevcut olması gerekir. Kullanılan gerçek MIME türü dizesi, kesinlikle çıkarıcı ile codec arasında bir anlaşmadır (diyenin MediaDefs.h
dosyasına eklenmesi gerekmez).
Medya tarayıcısıyla entegre edin
Medya tarayıcısı yeni dosya türlerini arar ve medya veritabanına ekler.
Medya tarayıcısının özel dosya türünüzü işleyebilmesi için tarayıcının bu dosya türünü bilmesi gerekir. Android 10 veya sonraki sürümlerde MimeUtils
(libcore
içinde), MIME ile uzantı eşlemesini korur. Daha önce bu eşleme
MediaFile.java
dosyasında işlenir. Bu dosya,
MIME türünden MTP biçimi sabitlerine.
Ayıklayıcılar, destekledikleri dosya adı uzantılarının listesini (ör. MP3 veya MP4) dışa aktarabilir. Ancak bu veri yalnızca LegacyMediaScanner
tarafından kullanılır. Herhangi bir etkisi
Varsayılan olarak kullanılan ModernMediaScanner
.