Android端ExoPlayer接入移动解析HTTPDNS指南

本文介绍AndroidExoPlayer接入移动解析HTTPDNS

概述

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

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

集成步骤

1. 添加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的版本保持一致。

2. 使用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();

3. 使用移动解析HTTPDNS

最后就是在OkHttp网络库中集成移动解析HTTPDNS,具体集成步骤请参考AndroidOkHttp框架接入HTTPDNS Android SDK最佳实践方案