安卓手机APP开发__媒体开发部分__调试的日志

安卓手机APP开发__媒体开发部分__调试的日志

概述

默认情况下,ExoPlayer仅有错误日志。为了记录播放器的事件,使用了事件日志类
这个类提供了额外的日志信息对于理解播放器正在做什么是很有帮助的,也有利于
调试播放的问题。事件日志记录器实现了分析监听器,所以用ExoPlayer来注册一个
实例是容易的。

Kotlin

player.addAnalyticsListener(EventLogger())

查看日志的最简单的方式是使用安卓工作台的日志标签页。你能选择你的APP作为一个
可调试的进程,告诉日志标签页仅记录选择的APP。使用事件日志记录器的表达式来过滤
日志也是可以的。

另一个使用安卓工作台的日志标签页的方法是使用控制台。例如

adb logcat EventLogger:* ExoPlayerImpl:* *:s

播放器的信息

ExoPlayerImpl类传递两个重要的信息,包括播放器版本,设备版本,操作系统版本,
还有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秒后完成了。在方括号内元素是:


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

在这个例子中,播放器已经选择了五个可用的轨道中的四个。第五个视频轨道没有被选择,
因为它超过了设备的能力。在播放期间,播放器根据已经选择的视频轨道进行适配。
当播放器的适配从一个轨道到另一个轨道,就被记录了下来。如下所示:


 

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]

这一行日志显示了播放器在进入媒体后3秒时切换到了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]

相关推荐

  1. 手机APP开发__媒体开发部分__调试

    2024-04-26 06:32:03       16 阅读
  2. 手机APP开发__媒体开发部分__APK裁剪

    2024-04-26 06:32:03       18 阅读
  3. 手机APP开发__媒体开发部分__媒体

    2024-04-26 06:32:03       16 阅读
  4. 手机APP开发__媒体开发部分__媒体

    2024-04-26 06:32:03       15 阅读
  5. 手机APP开发__媒体开发部分__直播流

    2024-04-26 06:32:03       17 阅读
  6. 手机APP开发__媒体开发部分__网络栈

    2024-04-26 06:32:03       18 阅读
  7. 手机APP开发__媒体开发部分__音轨选择

    2024-04-26 06:32:03       15 阅读
  8. 手机APP开发__媒体开发部分__播放器接口

    2024-04-26 06:32:03       13 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-26 06:32:03       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-26 06:32:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-26 06:32:03       20 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-26 06:32:03       20 阅读

热门阅读

  1. 2014NOIP普及组真题 1. 珠心算测验

    2024-04-26 06:32:03       15 阅读
  2. 定时任务管理系统详细设计说明书

    2024-04-26 06:32:03       11 阅读
  3. git commit 提交信息规范

    2024-04-26 06:32:03       15 阅读
  4. jmeter分布式压力测试搭建

    2024-04-26 06:32:03       14 阅读
  5. Ajax&Axios

    2024-04-26 06:32:03       14 阅读
  6. 计算机视觉(CV)技术的优势和挑战

    2024-04-26 06:32:03       14 阅读
  7. vue:使用:element 中弹框中获取table高度无效

    2024-04-26 06:32:03       10 阅读
  8. 6.Linux常用命令---文件目录管理(3)

    2024-04-26 06:32:03       11 阅读
  9. AR模块中通用对账的优化尝试

    2024-04-26 06:32:03       12 阅读
  10. CocoaPods使用详解

    2024-04-26 06:32:03       11 阅读
  11. 39 vue.js

    2024-04-26 06:32:03       12 阅读
  12. MATLAB初学者入门(16)—— 图搜索算法

    2024-04-26 06:32:03       12 阅读
  13. 4、Flink执行模式(流/批)详解(下)

    2024-04-26 06:32:03       14 阅读
  14. golang 锁bug 记录

    2024-04-26 06:32:03       11 阅读