播放器SDK接入文档

1. 接入前准备

1.1. 注册

1.2. 工程配置

  • 权限配置
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
  • 最小支持版本
Android4.2 API17
  • 添加工程依赖
implementation 'com.cosmos.mediax:playersdk:1.2.9'
  • so架构

SDK 提供了armeabi-v7a 、 armeabi 、arm64-v8a 架构,请在app/build.gradle文件中配置合适的代码。(在android/defaultConfig/结构下添加)

ndk {
    abiFilters "armeabi-v7a","armeabi","arm64-v8a"
}
  • 混淆配置
-keepclasseswithmembernames class * {
native <methods>;
}

-keep class tv.danmaku.ijk.media.** {*;}
-keep class com.mm.mmfile.** {*;}
-keep class com.momo.proxy.**{*;}
-keep class com.cosmos.mdlog.** {*;}
  • 视频格式与协议
格式:mp4(h264/h265)、flv
协议:http/https 本地视频(文件绝对路径/文件协议路径)

2. 功能接入

2.1. 基础设置

  • 初始化
PlayerManager.init(this, "your app id");

//设置视频缓存路径,如果不设置,默认在/sdcard/ijkCache目录下
File file = new File(Environment.getExternalStorageDirectory(), "ijkCache");
PlayerManager.initCachePath(file.getAbsolutePath());
  • 预加载操作(其他接口参考接口文档 IMediaPreloader)
//判断视频是否已经预加载
PlayerManager.getMediaPreLoader().isTakCachedByUrl(videoUrl);

//添加预加载任务
PlayerManager.getMediaPreLoader().addTask(videoUrl);

//取消预加载任务
PlayerManager.getMediaPreLoader().clearTaskByUrl(videoUrl);

2.2. 使用VideoView播放视频

  • 构建VideoView
//布局添加,或直接构建
<com.mm.player.VideoView
    android:id="@+id/player_videoview"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />


videoView = findViewById(R.id.player_videoview);
//videoView = new VideoView(getContext());
  • 设置
//设置裁切模式
videoView.setScaleType(ScalableType.FIT_CENTER);

//设置状态监听
videoView.setOnStateChangedListener(new ICosPlayer.OnStateChangedListener() {
    @Override
    public void onStateChanged(final int state) {
        if (state == ICosPlayer.STATE_BUFFERING) {
            //do something,eg 显示loading
        } else if (state == ICosPlayer.STATE_READY) {
            //do something
        }
    }
});
  • 播放控制
//开始播放
videoView.playVideo(videoUrl);
//跳转
videoView.seekTo(3000);

playPauseBtn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        if (videoView.isPlaying()) {
            videoView.pause();
            playPauseBtn.setImageResource(android.R.drawable.ic_media_play);
        } else {
            videoView.resume();
            playPauseBtn.setImageResource(android.R.drawable.ic_media_pause);
        }
    }
});

//记录当前播放位置
lastPos = videoView.getCurrentPosition();
//释放
videoView.releaseVideo();

3. 播放器错误码

  • -1001
404,资源不存在,属于服务器错误
  • -1002
io错误,属于网络超时或者代理出现错误
  • -2001
创建音频解码器错误,属于视频文件损坏或不支持
  • -2003
协议不支持,属于网络或文件错误
  • -2004
文件格式不支持,属于视频文件损坏或不支持,一般由代理模块下载文件错误导致
  • -2005
硬解码错误,属于一般由于文件损坏或者解码器内部状态错误导致
  • -541478725
无网络或文件错误,属于文件不存在或损坏,一般由于代理模块下载文件失败导致
Copyright © momo 2019 all right reserved,powered by Gitbook修订时间: 2020-10-19 17:21:53

results matching ""

    No results matching ""