返回

探秘ExoPlayer:开发者指南全译(03)——媒体类型

Android

ExoPlayer 支持的媒体类型:流媒体的指南

媒体类型简介

媒体流是一种通过互联网传输音频和视频内容的方法,它使我们能够随时随地享受喜爱的电影、电视节目和音乐。ExoPlayer 是一个流行的流媒体播放器库,它支持多种媒体类型,让开发人员可以轻松地将其集成到应用程序中。本文将探讨 ExoPlayer 支持的媒体类型及其技术细节。

适应组类型

ExoPlayer 支持三种主要的适应组类型:视频、音频和文本。每个类型代表一组具有相似特征的媒体流,例如视频分辨率、音频采样率或文本格式。开发人员需要定义一个或多个适应组,以便 ExoPlayer 选择适合设备和网络条件的最佳流。

类型 媒体样本格式 示例
视频 H.264、VP8、VP9、H.265/HEVC 视频文件(.mp4、.webm、.mkv)
音频 AAC、MP3、Vorbis、Opus 音频文件(.mp3、.aac、.ogg)
文本 CEA-608、WebVTT 字幕文件(.srt、.vtt)

视频媒体类型

ExoPlayer 支持多种视频媒体类型,包括:

H.264 视频

  • 基于 Annex B 格式的 ES 轨道
  • 使用 Baseline、High、Main 或 High 10 配置文件
  • 分辨率不超过 1080p
  • 使用 4:2:0 或 4:2:2 颜色格式
  • 使用 H.264 参考列表 0 或 1
  • 单倍或三倍扫描

VP8 视频

  • 基于 Annex B 格式的 ES 轨道
  • 分辨率不超过 1080p
  • 使用 4:2:0 或 4:2:2 颜色格式
  • 单倍或三倍扫描

VP9 视频

  • 基于 Annex B 格式的 ES 轨道
  • 分辨率不超过 1080p
  • 使用 4:2:0 或 4:2:2 颜色格式
  • 单倍或三倍扫描

H.265/HEVC 视频

  • 基于 Annex B 格式的 ES 轨道
  • 使用 Main 或 Main 10 配置文件
  • 分辨率不超过 1080p
  • 使用 4:2:0 或 4:2:2 颜色格式
  • 使用 H.265 参考列表 0 或 1
  • 单倍或三倍扫描

音频媒体类型

ExoPlayer 支持多种音频媒体类型,包括:

AAC 音频

  • ADTS 或 LOAS 容器
  • 使用低复杂度 (LC) 配置文件
  • 采样率不超过 48kHz
  • 最多 6 个声道

MP3 音频

  • MPEG-1 或 MPEG-2 音频第 3 层 (MP3) 标准
  • 采样率不超过 48kHz
  • 最多 6 个声道

Vorbis 音频

  • Vorbis 音频编码器
  • 采样率不超过 48kHz
  • 最多 6 个声道

Opus 音频

  • Opus 音频编码器
  • 采样率不超过 48kHz
  • 最多 6 个声道

文本媒体类型

ExoPlayer 支持两种文本媒体类型,包括:

CEA-608 文本

  • 基于 ES 轨道的字幕流
  • 没有特定限制

WebVTT 文本

  • 基于 ES 轨道的字幕流
  • 没有特定限制

代码示例

以下代码示例展示了如何使用 ExoPlayer 播放 H.264 视频和 AAC 音频:

val videoUri = Uri.parse("http://example.com/video.mp4")
val audioUri = Uri.parse("http://example.com/audio.mp3")

val mediaItem = MediaItem.Builder()
    .setUri(videoUri)
    .setMimeType(MediaItem.MIME_TYPE_VIDEO_MP4)
    .setSubtitles(MediaItem.Subtitle(audioUri, MediaItem.MIME_TYPE_AUDIO_AAC))
    .build()

val player = ExoPlayer.Builder(this).build()
player.setMediaItem(mediaItem)
player.prepare()
player.play()

总结

ExoPlayer 提供了对各种媒体类型的高度支持,使开发人员能够构建灵活且强大的流媒体应用程序。了解这些类型及其技术细节对于优化播放体验和满足用户的期望至关重要。

常见问题解答

1. ExoPlayer 可以播放哪些类型的媒体文件?

  • ExoPlayer 可以播放各种媒体文件,包括视频(MP4、WebM、MKV)、音频(MP3、AAC、OGG)和文本(SRT、VTT)。

2. ExoPlayer 支持哪种视频编解码器?

  • ExoPlayer 支持 H.264、VP8、VP9 和 H.265/HEVC 视频编解码器。

3. ExoPlayer 支持哪种音频编解码器?

  • ExoPlayer 支持 AAC、MP3、Vorbis 和 Opus 音频编解码器。

4. ExoPlayer 支持哪些字幕格式?

  • ExoPlayer 支持 CEA-608 和 WebVTT 字幕格式。

5. 如何使用 ExoPlayer 播放媒体文件?

  • 要使用 ExoPlayer 播放媒体文件,请使用 ExoPlayer.Builder() 创建一个播放器实例,然后使用 setMediaItem()prepare() 方法加载媒体文件。