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 yukarı akış şeklinde gösterebilir.
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 oluşturmanız gerekir Ayıklayıcı ve bir Windows Media video Kod Çözücü dosyası.
Uzantılar hakkında
Varsayılan ortam ayıklayıcıları gereksinimlerinizi karşılamıyorsa
/system/lib[64]/extractors/
içindeki özel ayıklayıcı eklentileri. Ayıklayıcı işlemi
Google'ın sağladığı APEX paketinden ayıklayıcı eklentilerini otomatik olarak yükler ve
başlangıç fiyatı: /system/lib[64]/extractors/
.
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. İlgili içeriği oluşturmak için kullanılan
kitaplık giriş noktası C2ComponentStore
arayüzüdür. Örneğin,
web sitesindeki varsayılan yazılım codec mağazası
frameworks/av/media/codec2/vndk/C2Store.cpp
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 firma codec hizmet işlemi başladığında bunu yükleyebilir.
üst düzey giriş noktasıdır.
Ayıklayıcı oluşturma
Yeni bir biçim için ayıklayıcı eklerken, ayıklayıcının yalnızca
kararlı NDK API'leri içerir ve gizli API'lere bağlı değildir. 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 ayıklayıcınız,
ayıklayıcıyı Google tarafından sağlanan ayıklayıcıya almak için aşağıdaki adımları uygulayarak çerçeveyi ayıklayıcınızı kullanmaya zorlayabilirsiniz:
Sniff()
işlevini kullanarak
Google tarafından sağlanan ekran.
Medya çerçevesi ayıklayıcınızı yüklediğinde (/system/lib/64/extractors
kaynağından
bir APEX üzerinden çalışıyorsa dosyayı tanır ve dosyayla ilgili bilgi alır.
içerik. 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 kod çözücü. Ö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 HEVC.
Ayıklayıcı, aktardığı medya kanallarının MIME türünü yayınlarken
içeriyorsa, bu MIME türlerini destekleyen codec'lerin
dosyasının tam olarak desteklenmesi gerekir. Kullanılan gerçek MIME türü dizesi
arasındaki sözleşmenin açık olup olmadığını kontrol edin (dizenin
MediaDefs.h
dosyasına eklenir).
Medya tarayıcısıyla entegre edin
Medya tarayıcısı yeni dosya türleri arar ve bunları medya veritabanına ekler.
Medya tarayıcısının özel dosya türünüzü işlemesi için tarayıcının şunları yapması gerekir:
gerçekleşebilir. Android 10 veya sonraki sürümlerde, MimeUtils
(
libcore
), MIME-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.
Bir ayıklayıcı, destekledikleri dosya adı uzantılarının (MP3 gibi) listesini dışa aktarabilir
veya MP4). Ancak bu veri yalnızca LegacyMediaScanner
tarafından kullanılır. Herhangi bir etkisi
Varsayılan olarak kullanılan ModernMediaScanner
.