Varsayılan olarak, ExoPlayer yalnızca hataları günlüğe kaydeder. Oyuncu etkinliklerini günlüğe kaydetmek için EventLogger
kullanılabilir. Sağladığı ek günlük kaydı,
oynatıcının ne yaptığını anlamanın yanı sıra oynatma hatalarını ayıklama
sorunları. EventLogger
, AnalyticsListener
yöntemini uyguladığından bir örnek kaydeder
ExoPlayer
kullanmak çok kolay:
Kotlin
player.addAnalyticsListener(EventLogger())
Java
player.addAnalyticsListener(new EventLogger());
Günlüğü gözlemlemenin en kolay yolu Android Studio'nun logcat sekmesini kullanmaktır. Siz
uygulamanızı paket adına (
androidx.media3.demo.main
) ve logcat'e bildirin
sekmesinden yalnızca seçili uygulamayı göster öğesini seçebilirsiniz. İnsanların
günlük kaydını
EventLogger|ExoPlayerImpl
, yalnızca EventLogger
ve
oynatıcısını kullanıyor.
Android Studio'nun logcat sekmesini kullanmaya alternatif olarak konsolu da kullanabilirsiniz. Örneğin, örnek:
adb logcat EventLogger:* ExoPlayerImpl:* *:s
Oynatıcı bilgileri
ExoPlayerImpl
sınıfı, oynatıcı sürümüyle ilgili iki önemli satır sağlar:
uygulamanın çalıştığı cihaz ve işletim sistemi ile uyumlu
olan ExoPlayer modüllerini
yüklendi:
ExoPlayerImpl: Init 59a18ab [AndroidXMedia3/1.0.0-rc02] [flame, Pixel 4, Google, 33]
ExoPlayerImpl: Release 59a18ab [AndroidXMedia3/1.0.0-rc02] [flame, Pixel 4, Google, 33] [media3.common, media3.datasource, media3.ui, media3.exoplayer, media3.decoder, media3.exoplayer.dash, media3.extractor]
Oynatma durumu
Oyuncu durumu değişiklikleri, aşağıdaki gibi satırlara kaydedilir:
EventLogger: playWhenReady [eventTime=0.00, mediaPos=0.00, window=0, true, USER_REQUEST]
EventLogger: state [eventTime=0.01, mediaPos=0.00, window=0, BUFFERING]
EventLogger: state [eventTime=0.93, mediaPos=0.00, window=0, period=0, READY]
EventLogger: isPlaying [eventTime=0.93, mediaPos=0.00, window=0, period=0, true]
EventLogger: playWhenReady [eventTime=9.40, mediaPos=8.40, window=0, period=0, false, USER_REQUEST]
EventLogger: isPlaying [eventTime=9.40, mediaPos=8.40, window=0, period=0, false]
EventLogger: playWhenReady [eventTime=10.40, mediaPos=8.40, window=0, period=0, true, USER_REQUEST]
EventLogger: isPlaying [eventTime=10.40, mediaPos=8.40, window=0, period=0, true]
EventLogger: state [eventTime=20.40, mediaPos=18.40, window=0, period=0, ENDED]
EventLogger: isPlaying [eventTime=20.40, mediaPos=18.40, window=0, period=0, false]
Bu örnekte oynatma, oynatıcı hazırlandıktan 0,93 saniye sonra başlar. İlgili içeriği oluşturmak için kullanılan Kullanıcı 9, 4 saniye sonra oynatmayı duraklatır ve bir saniye sonra şu saatte devam ettirir: 10,4 saniye. Oynatma, on saniye sonra 20,4.saniyede sona erer. Yaygın köşeli parantez içindeki öğeler şunlardır:
[eventTime=float]
: Oyuncunun oluşturulmasından bu yana geçen gerçek süre.[mediaPos=float]
: Geçerli oynatma konumu.[window=int]
: Geçerli pencere dizini.[period=int]
: Bu aralıktaki geçerli dönem.
Her satırdaki son öğeler, bildirilen durumun değerini belirtir.
Medya kanalları
Kullanılabilir veya seçilen parçalar değiştiğinde parkur bilgileri kaydedilir. Bu oynatmanın başında en az bir kez gerçekleşir. Aşağıdaki örnekte, parçanın günlük kaydı oluşturma:
EventLogger: tracks [eventTime=0.30, mediaPos=0.00, window=0, period=0,
EventLogger: group [
EventLogger: [X] Track:0, id=133, mimeType=video/avc, bitrate=261112, codecs=avc1.4d4015, res=426x240, fps=30.0, supported=YES
EventLogger: [X] Track:1, id=134, mimeType=video/avc, bitrate=671331, codecs=avc1.4d401e, res=640x360, fps=30.0, supported=YES
EventLogger: [X] Track:2, id=135, mimeType=video/avc, bitrate=1204535, codecs=avc1.4d401f, res=854x480, fps=30.0, supported=YES
EventLogger: [X] Track:3, id=160, mimeType=video/avc, bitrate=112329, codecs=avc1.4d400c, res=256x144, fps=30.0, supported=YES
EventLogger: [ ] Track:4, id=136, mimeType=video/avc, bitrate=2400538, codecs=avc1.4d401f, res=1280x720, fps=30.0, supported=NO_EXCEEDS_CAPABILITIES
EventLogger: ]
EventLogger: group [
EventLogger: [ ] Track:0, id=139, mimeType=audio/mp4a-latm, bitrate=48582, codecs=mp4a.40.5, channels=2, sample_rate=22050, supported=YES
EventLogger: [X] Track:1, id=140, mimeType=audio/mp4a-latm, bitrate=127868, codecs=mp4a.40.2, channels=2, sample_rate=44100, supported=YES
EventLogger: ]
EventLogger: ]
Bu örnekte oynatıcı, mevcut beş videodan dördünü seçmiştir.
izler. Beşinci video parçası, şu eşiği aştığı için seçilmedi:
supported=NO_EXCEEDS_CAPABILITIES
tarafından belirtildiği şekliyle cihazın özellikleri.
Oynatıcı, oynatma sırasında seçili video parçaları arasında uyum sağlar. Zaman
Oyuncu bir pistten diğerine geçerken, bir pistteki gibi bir satıra giriş yapılır.
aşağıda bulabilirsiniz:
EventLogger: downstreamFormat [eventTime=3.64, mediaPos=3.00, window=0, period=0, id=134, mimeType=video/avc, bitrate=671331, codecs=avc1.4d401e, res=640x360, fps=30.0]
Bu günlük satırı, oynatıcının 640x360 çözünürlüklü videoya geçiş yaptığını gösterir medyaya kaç saniye kaldığını anlamaya çalışırım.
Kod çözücü seçimi
Çoğu durumda, ExoPlayer medyayı,MediaCodec
temel platform üzerinde çalışıyoruz. Kod çözücü başlatıldığında şunun gibi satırlara giriş yapılır:
şunlardır:
EventLogger: videoDecoderInitialized [0.77, 0.00, window=0, period=0, video, OMX.qcom.video.decoder.avc]
EventLogger: audioDecoderInitialized [0.79, 0.00, window=0, period=0, audio, OMX.google.aac.decoder]