ExoPlayer 和 SimpleExoPlayer 有什么区别?

What's the difference between ExoPlayer and SimpleExoPlayer?

我正在学习如何使用 Exoplayer,但我无意中遇到了这个问题。在 Exoplayer 教程中,我读到:

"For the vast majority of use cases SimpleExoPlayer.Builder should be used. This builder returns SimpleExoPlayer, which extends ExoPlayer to add additional high level player functionality."

指的是哪种高级播放器功能?

SimpleExoPlayer 使用 ExoPlayer 作为基础提供额外的功能。例如,它提供了一种功能,可以在音频从耳机重新路由到设备扬声器时自动暂停播放器。您只需将 true 传递给函数 setHandleAudioBecomingNoisy

simpleExoPlayer.setHandleAudioBecomingNoisy(true)

它还使用户能够仅通过传递上下文来创建 ExoPlayer 的实例。它将使用默认的 renderFactory、trackSelector、LoadControl 等。 它提供基本属性,如 videoFormat、audioFormat、audioSessionId 等。

您可以通过 SimpleExoPlayer.java 了解更多信息。只需按住 CTRL 并单击 class 名称即可打开它的源代码。

ExoPlayer只是一个扩展接口Player的接口。它只是定义了播放器的骨架,并没有真正实现播放器的功能逻辑。您可以实现接口 ExoPlayer 来创建您自己的播放器。
SimpleExoPlayer 是一个 class。它是实现接口 BasePlayer 中定义的播放器的所有功能的实际播放器。 BasePlayer 还扩展了接口 Player.
您应该深入研究 ExoPlayer 源代码以获取更多详细信息。