기본적으로 ExoPlayer는 오류만 로깅합니다. 플레이어 이벤트를 기록하려면 EventLogger
클래스를 사용할 수 있습니다. 제공하는 추가 로깅은
플레이어가 무엇을 하고 있는지 이해하고 재생을 디버깅하기 위해
있습니다 EventLogger
는 AnalyticsListener
를 구현하므로 인스턴스를 등록하는 중
ExoPlayer
를 사용하면 간단합니다.
Kotlin
player.addAnalyticsListener(EventLogger())
자바
player.addAnalyticsListener(new EventLogger());
로그를 관찰하는 가장 쉬운 방법은 Android 스튜디오의 logcat 탭을 사용하는 것입니다. 나
패키지 이름 (
androidx.media3.demo.main
)하고 logcat에 알립니다.
탭에서 선택한 애플리케이션만 표시를 선택하여 해당 앱에 대해서만 로깅합니다. 그것은
표현식의 일부로 로깅을 추가로 필터링할 수 있음
EventLogger|ExoPlayerImpl
: EventLogger
및
있습니다.
Android 스튜디오의 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초 후에 재생을 일시중지하고 1초 후 10.4초 재생이 10초 후 20.4초에서 종료됩니다. 일반적인 대괄호 안의 요소는 다음과 같습니다.
[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: ]
이 예에서 플레이어는 사용 가능한 동영상 5개 중 4개를
있습니다. 다섯 번째 동영상 트랙은
기기의 성능(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 해상도 동영상으로 전환되었음을 나타냅니다. 미디어에 3초 동안 삽입했습니다.
디코더 선택
대부분의 경우 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]