安卓手机APP开发__媒体开发部分__检索元数据

安卓手机APP开发__媒体开发部分__检索元数据

目录

在播放期间

没有播放时

动作照片


在播放期间

媒体的元数据在播放期间能以多种方式来检索。最正常不过的方法

是监听Player.Listener这个监听器的方法onMediaMetadataChanged的事件,

这将提供一个可以使用的MediaMetadata对象,它有例如标题和相册艺术家等属性。

还有,调用播放器的getMediaMetadata方法可以返回相同的对象。

Kotlin

Kotlin 复制代码
override fun onMediaMetadataChanged(mediaMetadata: MediaMetadata) {
  mediaMetadata.title?.let(::handleTitle)
}

如果你的APP需要读取特定的Metadata.Entry对象,那么,它应该监听

Player.Listener的onMetadata方法。还有如果需要的是静态数据,能

通过TrackSelections的getFormat方法。

没有播放时

如果不需要播放,使用MetadataRetriever 来得到元数据是更加高效的,

因为它避免了创建和准备一个播放器。

Kotlin

Kotlin 复制代码
val trackGroupsFuture = MetadataRetriever.retrieveMetadata(context, mediaItem)
Futures.addCallback(
  trackGroupsFuture,
  object : FutureCallback<TrackGroupArray?> {
    override fun onSuccess(trackGroups: TrackGroupArray?) {
      if (trackGroups != null) handleMetadata(trackGroups)
    }

    override fun onFailure(t: Throwable) {
      handleFailure(t)
    }
  },
  executor
)

动作照片

抽取一个动作照片的元数据也是有可能的,包括图像和视频的长度。

例如,如下的格式被支持:

谷歌和三星的照相机APP记录了JPEG格式的动作照片。这个格式是

ExoPlayer可播放的,并且相关的元数据也是能被检索的。使用

MetadataRetriever就行了。

谷歌和三星的照相机APP记录了HEIC格式的动作照片。这个格式是

ExoPlayer暂时还不可播放的,但相关的元数据是能被检索的。使用

MetadataRetriever就行了。

对于动作照片,TrackGroupArray得到了MetadataRetriever包括了

TrackGroup,这个TrackGroup有一个单独的格式,格式里有

MotionPhotoMetadata的元数据。

Kotlin

Kotlin 复制代码
0.until(trackGroups.length)
  .asSequence()
  .mapNotNull { trackGroups[it].getFormat(0).metadata }
  .filter { metadata -> metadata.length() == 1 }
  .map { metadata -> metadata[0] }
  .filterIsInstance<MotionPhotoMetadata>()
  .forEach(::handleMotionPhotoMetadata)
相关推荐
企业数字化笔记6 小时前
视频目标跟踪怎么选?SORT、DeepSORT、ByteTrack 的连续性、遮挡与计算成本对比
人工智能·目标跟踪·音视频
zhizhizhuzhuxia9 小时前
情感解说短视频的配音选型:从工程视角看情感音色与批量出片
人工智能·音视频
AOI小白新手上路13 小时前
RainMamba 视频去雨复现实录:从 AutoDL 开机到 PSNR 出分
音视频
feasibility.13 小时前
BeefTV:数据留在本地的 AI 视频工作台,和 ComfyUI 分工不同
人工智能·音视频
可乐鸡翅yeah_13 小时前
AES‑128 加密 M3U8,IV 初始化向量新手容易踩坑
前端·网络·数据库·ffmpeg·音视频·m3u8在线
素师良码14 小时前
第5篇:显示驱动必备调试工具浅析
android
维克兜率天14 小时前
【维克】配对交易的季节性:哪些品种适合长拿?
android·开发语言·笔记·python·算法·kotlin·量化
墨天梦15 小时前
B06_XML控件布局与ViewBinding
android·kotlin
晚风叙码15 小时前
MySQL 表的操作:从建表到删表,一篇讲清楚
android·mysql·oracle
勤劳X码农16 小时前
2026年AI配音做职场视频怎么选?
人工智能·音视频