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

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

目录

在播放期间

没有播放时

动作照片


在播放期间

媒体的元数据在播放期间能以多种方式来检索。最正常不过的方法
是监听Player.Listener这个监听器的方法onMediaMetadataChanged的事件,
这将提供一个可以使用的MediaMetadata对象,它有例如标题和相册艺术家等属性。
还有,调用播放器的getMediaMetadata方法可以返回相同的对象。

Kotlin

override fun onMediaMetadataChanged(mediaMetadata: MediaMetadata) {
  mediaMetadata.title?.let(::handleTitle)
}

如果你的APP需要读取特定的Metadata.Entry对象,那么,它应该监听
Player.Listener的onMetadata方法。还有如果需要的是静态数据,能
通过TrackSelections的getFormat方法。

没有播放时

如果不需要播放,使用MetadataRetriever 来得到元数据是更加高效的,
因为它避免了创建和准备一个播放器。


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

0.until(trackGroups.length)
  .asSequence()
  .mapNotNull { trackGroups[it].getFormat(0).metadata }
  .filter { metadata -> metadata.length() == 1 }
  .map { metadata -> metadata[0] }
  .filterIsInstance<MotionPhotoMetadata>()
  .forEach(::handleMotionPhotoMetadata)

相关推荐

  1. 手机APP开发__媒体开发部分__检索数据

    2024-04-20 22:16:02       14 阅读
  2. 手机APP开发__媒体开发部分__APK裁剪

    2024-04-20 22:16:02       18 阅读
  3. 手机APP开发__媒体开发部分__媒体

    2024-04-20 22:16:02       16 阅读
  4. 手机APP开发__媒体开发部分__媒体

    2024-04-20 22:16:02       14 阅读
  5. 手机APP开发__媒体开发部分__直播流

    2024-04-20 22:16:02       16 阅读
  6. 手机APP开发__媒体开发部分__网络栈

    2024-04-20 22:16:02       18 阅读
  7. 手机APP开发__媒体开发部分__媒体投屏

    2024-04-20 22:16:02       14 阅读
  8. 手机APP开发__媒体开发部分__音轨的选择

    2024-04-20 22:16:02       15 阅读
  9. 手机APP开发__媒体开发部分__播放器的接口

    2024-04-20 22:16:02       13 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-20 22:16:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-20 22:16:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-20 22:16:02       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-20 22:16:02       20 阅读

热门阅读

  1. Best practices for Grafana SLOs

    2024-04-20 22:16:02       12 阅读
  2. SpringMVC 异常没有处理,发送 /error 请求(404 错误)

    2024-04-20 22:16:02       12 阅读
  3. npm, reason: certificate has expired

    2024-04-20 22:16:02       16 阅读
  4. 桐乡上元会计——管理会计在企业中的价值

    2024-04-20 22:16:02       14 阅读
  5. uniapp --- 实现图片压缩(兼容H5)

    2024-04-20 22:16:02       12 阅读
  6. Go语言常见错误 | 创建工具包

    2024-04-20 22:16:02       14 阅读
  7. Android中的Choreographer类

    2024-04-20 22:16:02       20 阅读
  8. VPP IKEv2隧道示例

    2024-04-20 22:16:02       16 阅读
  9. SpringBoot:正常启动,Controller 无法访问

    2024-04-20 22:16:02       20 阅读