安卓手机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)
相关推荐
开开心心就好39 分钟前
本地文件搜索工具,双击Ctrl就能呼出搜索
java·服务器·前端·支持向量机·ffmpeg·音视频·模拟退火算法
小豆庄1 小时前
视频脱敏引擎的追踪难题:转场误判定、ID撞号和淡入窗口
qt·算法·目标检测·音视频·视频·敏捷流程
hunterandroid1 小时前
[Android 从零到一] Glide 图片加载原理:三级缓存、生命周期绑定与内存优化
android
法的空间1 小时前
AI 编程时代,为什么 Dart 分析会拖慢大型项目的开发
android·flutter·ios
鱼儿也有烦恼2 小时前
客户端应用架构模式
android·架构
李永奉2 小时前
杰理可视化SDK开发-音频录制功能使用教程
笔记·单片机·嵌入式硬件·mcu·物联网·音视频
_YouziTech_2 小时前
【STM32+MAX98357】MP3转PCM存入Flash并控制音频输出
stm32·单片机·音视频·内存·pcm·i2s·wav
独隅2 小时前
Claude 高效应用实战指南
android·java·开发语言·claude·claude code
yangmu32032 小时前
万字长文拆解:AI视频生成(SVD/Sora类)的底层技术原理与实现路径
人工智能·音视频
硅基手札2 小时前
Android 系统全景专栏 00 · 总目录
android·操作系统·嵌入式开发