安卓手机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)
相关推荐
jinxindeep12 分钟前
JoyAI-Echo:让五分钟叙事视频拥有可延续的角色记忆
音视频
jason.zeng@150220722 分钟前
(第二讲)Android开发取摄像头流的基础(ImageAnalysis)
android
敲代码的瓦龙1 小时前
操作系统?Android与Linux!!!
android·linux·运维
愚公搬代码2 小时前
【愚公系列】《移动端AI应用开发》017-Android端应用开发(网络通信与API集成)
android·人工智能
say_fall2 小时前
可编程中断控制器8259A工作方式超详细解析
android·开发语言·学习·硬件架构·硬件工程
街灯L2 小时前
【Ubuntu】使用ffmpeg解析m3u8网页视频
ubuntu·ffmpeg·音视频
甜瓜看代码3 小时前
SystemUI 启动与组成机制
android·源码·源码阅读
黄林晴4 小时前
Kotlin 2.4.0 正式稳定!Android 升级、Compose、KMP 全变化详解
android·kotlin
恋猫de小郭5 小时前
Android 官方给 Compose 搞了个不需要 UI 环境的 Composable
android·前端·flutter
VidDown6 小时前
VidDown 使用介绍:一个免费、本地化的在线工具集
javascript·编辑器·音视频·视频编解码·视频