示例格式

示例格式

在定义 ExoPlayer 支持的格式时,请务必注意“媒体格式”是在多个级别定义的。从最低级别到最高级别,这些方法如下所示:

单个媒体样本的格式(例如视频帧或音频帧)。这些是示例格式。请注意,典型的视频文件将包含至少两种示例格式的媒体;一种是视频格式(例如 H.264),另一种是音频格式(例如 AAC)。

用于存放媒体选段和关联元数据的容器的格式。这些是容器格式。媒体文件具有单一容器格式(例如 MP4),通常由文件扩展名表示。请注意,对于某些纯音频格式(例如 MP3),示例格式和容器格式可能相同。

DASH、SmoothStreaming 和 HLS 等自适应流式传输技术。这些并非媒体格式,但仍需要定义 ExoPlayer 提供的支持级别。

以下部分定义了 ExoPlayer 在各个级别(从高到低)的支持情况。最后两个部分介绍了对独立字幕格式和 HDR 视频播放的支持。

自适应流式传输

DASH

ExoPlayer 支持采用多种容器格式的 DASH。必须对媒体串流进行解复用,这意味着必须在 DASH 清单中的不同 AdaptationSet 元素中定义视频、音频和文本(CEA-608 是例外情况,如下表所述)。还必须支持其中包含的音频和视频选段格式(如需了解详情,请参阅选段格式部分)。

功能

支持

评论

容器

FMP4

是

仅限解复的串流

WebM

是

仅限解复的串流

Matroska

是

仅限解复的串流

MPEG-TS

否

无支持计划

字幕

TTML

是

原始格式,或根据 ISO/IEC 14496-30 嵌入在 FMP4 中

WebVTT

是

原始格式,或根据 ISO/IEC 14496-30 嵌入在 FMP4 中

CEA-608

是

使用 SCTE 无障碍描述符进行信号传送时,嵌入在 FMP4 中

CEA-708

是

使用 SCTE 无障碍描述符进行信号传送时,嵌入在 FMP4 中

元数据

EMSG 元数据

是

嵌入在 FMP4 中

内容保护

Widevine

是

“cenc”方案:API 19 及更高版本;“cbcs”方案:API 25 及更高版本

PlayReady SL2000

是

Android TV,仅限“cenc”方案

ClearKey

是

API 21 及更高级别,仅限“cenc”方案

广告插播

多时段播放

是

服务器引导型广告插入 (xlinks)

否

IMA 服务器端和客户端广告

是

广告插播指南

实时播放

常规直播播放

是

超低延迟 CMAF 直播播放

是

通用媒体客户端数据(CMCD)

是

CMCD 集成指南

SmoothStreaming

ExoPlayer 支持使用 FMP4 容器格式的 SmoothStreaming。必须解复媒体串流,这意味着必须在 SmoothStreaming 清单中的各个 StreamIndex 元素中定义视频、音频和文本。还必须支持其中包含的音频和视频选段格式(如需了解详情,请参阅选段格式部分)。

功能

支持

评论

容器

FMP4

是

仅限解复的串流

字幕

TTML

是

嵌入在 FMP4 中

内容保护

PlayReady SL2000

是

仅分发至 Android TV

实时播放

常规直播播放

是

通用媒体客户端数据 (CMCD)

是

集成指南

HLS

ExoPlayer 支持采用多种容器格式的 HLS。还必须支持其中包含的音频和视频选段格式(如需了解详情,请参阅选段格式部分)。我们强烈建议 HLS 内容生产者生成高质量的 HLS 串流,如这篇博文中所述。

功能

支持

评论

容器

MPEG-TS

是

FMP4/CMAF

是

ADTS (AAC)

是

MP3

是

字幕

CEA-608

是

CEA-708

是

WebVTT

是

元数据

ID3

是

SCTE-35

否

内容保护

AES-128

是

AES-128 示例

否

Widevine

是

API 19 及更高级别(“cenc”方案)和 25 及更高级别(“cbcs”方案)

PlayReady SL2000

是

仅分发至 Android TV

服务器控制

增量更新

是

阻止播放列表重新加载

是

阻止加载预加载提示

是

不包括长度未定义的字节范围

广告插播

由服务器引导的广告插入(插页式广告)

部分

仅限 VOD 和 X-ASSET-URI。

直播和 X-ASSET-LIST 将稍后添加。

IMA 服务器端和客户端广告

是

广告插播指南

实时播放

常规直播播放

是

低延迟 HLS (Apple)

是

低延迟 HLS(社区版)

否

通用媒体客户端数据

CMCD

是

CMCD 集成指南

渐进式容器格式

ExoPlayer 可以直接播放以下容器格式的串流。还必须支持其中包含的音频和视频选段格式(如需了解详情,请参阅选段格式部分)。如需了解图片容器和格式支持,请参阅图片。

容器格式

支持

评论

MP4

是

M4A

是

FMP4

是

WebM

是

Matroska

是

MP3

是

部分串流只能使用恒定比特率跳转功能进行跳转**

Ogg

是

包含 Vorbis、Opus 和 FLAC

WAV

是

MPEG-TS

是

MPEG-PS

是

FLV

是

无法跳转*

ADTS (AAC)

是

仅可使用恒定比特率跳转功能跳转**

FLAC

是

使用 FLAC 库或 ExoPlayer 库中的 FLAC 提取器***

AMR

是

仅可使用恒定比特率跳转功能跳转**

* 不支持跳转,因为容器未提供元数据(例如,一个选段索引),以允许媒体播放器高效地执行跳转。如果需要跳转,我们建议您使用更合适的容器格式。

** 这些提取器具有 FLAG_ENABLE_CONSTANT_BITRATE_SEEKING 标志,用于使用恒定比特率假设启用近似跳转。此功能默认处于停用状态。如需为支持此功能的所有提取器启用此功能,最简单的方法是使用 DefaultExtractorsFactory.setConstantBitrateSeekingEnabled,如此处所述。

*** FLAC 库提取器会输出原始音频,所有 API 级别的框架都可以处理该音频。ExoPlayer 库 FLAC 提取器会输出 FLAC 音频帧,因此需要有 FLAC 解码器(例如,用于处理 FLAC 的 MediaCodec 解码器 [从 API 级别 27 开始必需],或启用了 FLAC 的 FFmpeg 库)。如果应用是使用 FLAC 库构建的,DefaultExtractorsFactory 会使用扩展程序提取器。否则,它会使用 ExoPlayer 库提取器。

RTSP

ExoPlayer 同时支持直播和点播 RTSP。下面列出了支持的示例格式和网络类型。

支持的示例格式

H264(SDP 媒体描述必须在 fmtp 属性中包含 SPS/PPS 数据,以便解码器初始化)。

AAC(带 ADTS 比特流)。

AC3.

注意 :如需针对其他示例格式请求支持,请对此问题发表评论。

支持的网络类型

通过 UDP 单播传输 RTP(不支持多播)。

交错的 RTSP、RTP over RTSP 使用 TCP。

示例格式

默认情况下,ExoPlayer 使用 Android 的平台解码器。因此,支持的选段格式取决于底层平台,而不是 ExoPlayer。如需了解 Android 设备支持的示例格式,请参阅支持的媒体格式文档。请注意,除了列出的格式之外,个别设备可能还支持其他格式。

除了 Android 的平台解码器之外,ExoPlayer 还可以使用软件解码器扩展程序。这些库必须手动构建并添加到希望使用它们的项目中。我们目前为 AV1、VP9、FLAC、Opus、FFmpeg、MIDI、IAMF 和 MPEG-H 提供软件解码器库。

FFmpeg 库

FFmpeg 库支持解码各种不同的音频采样格式。您可以在构建库时选择要添加的解码器,如库的 README.md 中所述。下表提供了音频采样格式与相应 FFmpeg 解码器名称之间的映射。

示例格式

解码器名称

Vorbis

vorbis

Opus

opus

FLAC

flac

ALAC

alac

PCM μ-law

pcm_mulaw

PCM A-law

pcm_alaw

MP1、MP2、MP3

MP3

AMR-NB

amrnb

AMR-WB

amrwb

AAC

aac

AC-3

ac3

E-AC-3

eac3

DTS、DTS-HD

dca

TrueHD

mlp truehd

图像

ExoPlayer 支持以下图片格式。如需了解如何与可能支持另一组格式的外部库集成,请参阅图片加载库。

映像格式

支持

备注

BMP

是

GIF

否

不支持提取器

JPEG

是

JPEG 动态照片

是

支持静态图片和视频

JPEG Ultra HDR

是

在 Android 14 之前或在非 HDR 显示屏上回退到 SDR

PNG

是

WebP

是

HEIF/HEIC

是

HEIC 动态照片

部分解决/回答

仅支持静态图片*

AVIF(基准)

是

仅在 Android 14 及更高版本中解码

* 您可以使用 MetadataRetriever 获取 HEIC 动态照片的视频部分,并将其作为独立文件播放。

独立字幕格式

ExoPlayer 支持各种格式的独立字幕文件。您可以按照“媒体内容”页面上的说明旁加载字幕文件。

容器格式

支持

MIME 类型

WebVTT

是

MimeTypes.TEXT_VTT

TTML / SMPTE-TT

是

MimeTypes.APPLICATION_TTML

SubRip

是

MimeTypes.APPLICATION_SUBRIP

SubStationAlpha (SSA/ASS)

是

MimeTypes.TEXT_SSA

HDR 视频播放

ExoPlayer 负责从各种容器中提取高动态范围 (HDR) 视频,包括 MP4 中的杜比视界和 Matroska/WebM 中的 HDR10+。解码和显示 HDR 内容取决于 Android 平台和设备的支持。如需了解如何检查 HDR 解码/显示功能,以及各个 Android 版本的 HDR 支持限制,请参阅 HDR 视频播放。

在播放需要支持特定编解码器配置文件的 HDR 流时,ExoPlayer 的默认 MediaCodec 选择器会选择支持该配置文件的解码器(如果有),即使针对同一 MIME 类型的另一个解码器不支持该配置文件,并且位于编解码器列表中更高的位置也是如此。这可能会导致在流超出相同 MIME 类型的硬件解码器功能时选择软件解码器。

相关灵感

beat365体育亚洲入口 1磅等於幾公克?

1磅等於幾公克?

📅 07-26 👁️ 2547
beat365体育亚洲入口 纯副本佛鬼王

纯副本佛鬼王

📅 09-16 👁️ 9143
365bet吧 最快获得名刀dnf_dnf名刀哪里爆率高
365bet吧 游戏fps低是什么原因 一招教你提高游戏帧数
mobile365 求姻缘的正确方式,你知道吗?
beat365体育亚洲入口 淘女郎薇娅为什么会火

淘女郎薇娅为什么会火

📅 06-27 👁️ 8189
beat365体育亚洲入口 DNF:锻造武器只能刷巨龙?看看这些隐藏的捷径,一天就能锻8!
365bet吧 魔兽世界怀旧服高级钓鱼学习位置
beat365体育亚洲入口 手机流量卡全攻略:从选卡到避坑,一篇文章说透!