ExoPlayer, çok sayıda Android uygulaması tarafından kullanılmaktadır. OEM olarak, Hem yeni cihazlarda hem de diğer cihazlarda ExoPlayer'ın doğru çalışmasını mevcut cihazlar için yeni platform derlemeleri bulunuyor. Bu sayfada uyumluluk açıklanmaktadır bir cihaz veya platform OTA'sını göndermeden önce gerçekleştirmeyi önerdiğimiz testler ve çalışırken karşılaşılan yaygın hata modlarından bazılarını aşağıda bulabilirsiniz.
Testleri uygulama
ExoPlayer'ın oynatma testlerini çalıştırmak için öncelikle GitHub'daki ExoPlayer'ı seçin. Daha sonra testleri komut satırından veya Android Studio'ya gidin.
Komut satırı
Kök dizinde oynatma testlerini oluşturun ve yükleyin:
./gradlew :test-exoplayer-playback:installDebug
Ardından, GTS paketinde oynatma testlerini çalıştırın:
adb shell am instrument -w -r -e debug false \ -e package androidx.media3.test.exoplayer.playback.gts \ androidx.media3.test.exoplayer.playback.test/androidx.test.runner.AndroidJUnitRunner
Test sonuçları STDOUT içinde görünür.
Android Studio
ExoPlayer projesini açın, playbacktests
modülüne gidin ve sağ tıklayın
bu gts
klasöründe de görüntüleyebilir ve testleri çalıştırabilirsiniz. Test sonuçları Android Studio'nun
Çalıştır penceresi.
Sık karşılaşılan hata modları
ExoPlayer'ın oynatmasını çalıştırırken karşılaşılan yaygın hata modlarından bazıları testleri, her bir durumun olası temel nedeni ile birlikte aşağıda açıklanmaktadır. Biz yeni hata modları keşfedildikçe bu listeye eklenecektir.
Beklenmeyen video arabellek sunumu zaman damgası
Logcat, aşağıdakine benzer bir hata içerir:
Caused by: java.lang.IllegalStateException: Expected to dequeue video buffer
with presentation timestamp: 134766000. Instead got: 134733000 (Processed
buffers since last flush: 2242).
Bu hata genellikle test edilen video kod çözücünün yanlış olmasından kaynaklanır.
tamponları silmek, eklemek veya yeniden sıralamak. Yukarıdaki örnekte,
sunu zaman damgası 134766000
olan bir arabelleğin sıraya alınması bekleniyor.
MediaCodec.dequeueOutputBuffer
ancak
bunun yerine 134733000
sunu zaman damgası. Lütfen
kod çözücü uygulaması, özellikle de hata ile karşılaşıldığında
.
Çok fazla atlanan tampon var
Logcat, aşağıdakine benzer bir hata içerir:
junit.framework.AssertionFailedError: Codec(DashTest:Video) was late decoding:
200 buffers. Limit: 25.
Bu hata, test edilen video kod çözücünün. çok sayıda tamponun kodunu çözmeyi öğretiyor. Yukarıdaki örnekte, ExoPlayer, 200 tampon, bir test için kuyruğa alınmadan önce geciktiler bu sınır 25'tir. Bunun en bariz nedeni, video kod çözücünün arabelleklerin kodu çözme işlemi çok yavaştır. Hatalar yalnızca testlerin alt kümesi için oluşursa Widevine korumalı içeriği oynatıyorsa platformun açık kaynaklı çok yavaş olduğunu varsayalım. Kampanyalarınızın performansını kontrol etmenizi ve hız üzerinde optimizasyon yapılıp yapılamayacağını kaldırın.
Yerel pencerenin kimliği doğrulanamadı
Logcat, aşağıdakine benzer bir hata içerir:
SurfaceUtils: native window could not be authenticated
ExoPlayerImplInternal: Internal runtime error.
ExoPlayerImplInternal: android.media.MediaCodec$CodecException: Error 0xffffffff
Bu hata, platformun güvenli reklam ayarlarını doğru şekilde yapamadığını gösterir. bit işaretidir.
Test zaman aşımına uğradı
Logcat, aşağıdakine benzer bir hata içerir:
AssertionFailedError: Test timed out after 300000 ms.
Bu hata genellikle test sırasındaki kötü ağ bağlantısından kaynaklanır
gerekir. Cihazın ağ bağlantısı iyi görünüyorsa muhtemelen
testin, platform bileşenine (ör.
MediaCodec
, MediaDrm
veya AudioTrack
). Şunu inceleyin:
test sürecinde ileti dizileri oluşturur.