Android端阿里云公共DNS+ExoPlayer接入指南

本文档介绍了阿里云公共DNS Android SDK+ExoPlayer的接入方式。

1.概述

ExoPlayer是一个开源的多媒体播放器库,由Google开发,针对Android平台进行优化。相比于Android内置的MediaPlayer,ExoPlayer更为灵活且可扩展,适用于各种媒体播放需求,包括但不限于:本地文件、网络流媒体、及多种格式(如MP4、HLS、DASH等)的播放。

ExoPlayer在处理网络请求读取资源数据时,建议使用OkHttpDataSource,因为OkHttp暴露了自定义DNS服务的接口,可以利用这一功能来优雅地使用阿里云公共DNS。

2.添加OkHttp扩展SDK

您需要根据您使用的ExoPlayer版本来选择对应的OkHttp扩展SDK。

  • 如果您使用的ExoPlayer版本是androix下的media,需要添加下面的依赖项:

implementation "androidx.media3:media3-datasource-okhttp:x.x.x"
  • 如果您使用的ExoPlayer版本是ExoPlayer2,需要添加下面的依赖项:

implementation "com.google.android.exoplayer:extension-okhttp:x.x.x"
重要

以上两种方案中OkHttp扩展库的版本均需和ExoPlayer SDK的版本保持一致。

3.使用OkHttp扩展SDK

在初始化ExoPlayer时,使用OkHttp扩展库。

说明

上一部分介绍的两个版本的ExoPlayer,使用OkHttp扩展库的代码是一样的。

ExoPlayer player = new ExoPlayer.Builder(context)
        .setMediaSourceFactory(new DefaultMediaSourceFactory(new OkHttpDataSource.Factory(new Call.Factory() {
                    @NonNull
                    @Override
                    public Call newCall(@NonNull Request request) {
                        //此处clent是OkHttpClient实例,请替换成您项目中的OkHttpClient实例
                        return client.newCall(request);
                    }
                })))
        .build();

4.使用阿里云公共DNS

最后就是在OkHttp网络库中集成阿里云公共DNS,具体集成步骤请参考AndroidOkHttp框架场景下接入阿里云公共DNS Android SDK最佳实践方案