偵錯記錄功能

根據預設,ExoPlayer 只會記錄錯誤。為了記錄玩家事件,EventLogger 類別這個外掛程式提供的額外記錄功能可協助您 瞭解播放器正在執行的活動,以及播放偵錯 以負載平衡機制分配流量 即可降低應用程式發生效能問題的風險EventLogger 會實作 AnalyticsListener,因此註冊例項 ExoPlayer 很簡單:

Kotlin

player.addAnalyticsListener(EventLogger())

Java

player.addAnalyticsListener(new EventLogger());

觀察記錄最簡單的方法,就是使用 Android Studio 的 logcat 分頁。個人中心 您可以使用套件名稱 ( 如果是使用試用版應用程式,請androidx.media3.demo.main),並告知 logcat 按下 Tab 鍵,即可選取 [僅顯示所選應用程式],只記錄該應用程式的資料。是 可以使用運算式進一步篩選記錄 EventLogger|ExoPlayerImpl,如要僅從 EventLogger 和 。

除了使用 Android Studio 的 logcat 分頁以外,您也可以使用主控台。例如:

adb logcat EventLogger:* ExoPlayerImpl:* *:s

玩家資訊

ExoPlayerImpl 類別提供兩行與玩家版本相關的重要說明。 執行應用程式的裝置和 OS,以及 ExoPlayer 的模組 已載入:

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]

播放狀態

系統會記錄播放器狀態的變更,如下所示:

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]

在這個示例中,播放程序會在播放器準備妥當後 0.93 秒開始。 使用者在 9.4 秒後暫停播放,並於一秒後繼續播放 10.4 秒。播放到 20.4 秒後,影片會於 10 秒後結束。這個 包括:

  • [eventTime=float]:玩家建立後經過的實際時鐘時間。
  • [mediaPos=float]:目前的播放位置。
  • [window=int]:目前的視窗索引。
  • [period=int]:該時段的目前時段。

每一行的最終元素代表回報的狀態值。

媒體軌

當可使用或選取的測試群組有所變更時,系統就會記錄追蹤資訊。這個 才剛開始播放至少一次以下範例顯示音軌 自動調整串流:

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: ]

在這個範例中,播放器從五部可用影片中選取了四部 曲目未選取第五部影片,因為曲目數量超過 可用功能,如 supported=NO_EXCEEDS_CAPABILITIES 所示。 播放器會在播放過程中適時根據所選的視訊軌調整內容。時間 播放器會從一個軌道適應不同的內容,並記錄在類似於這行程式碼的一行 如下:

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]

這個記錄檔行表示播放器已改用 640x360 解析度影片 追蹤媒體的成效

選取解碼器

在大多數情況下,ExoPlayer 使用 MediaCodec 取得的 所有基本平台當解碼器初始化時,這會記錄在 這些:

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]