# IJKPlayer
**Repository Path**: relin/IJKPlayer
## Basic Information
- **Project Name**: IJKPlayer
- **Description**: Android IJK集成播放器
- **Primary Language**: Java
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 1
- **Created**: 2022-01-25
- **Last Updated**: 2024-08-07
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
#### IJKPlayer
IJK集成播放器,拥有亮度调整、音量调整、视频全屏播放。
#### 效果图标



#### Fix
1.更新编译为ff4.0--ijk0.8.8--20210426--001版本;
2.Android 11以上高版本报错问题
3.音量、光亮、进度调节逻辑修改
4.重新编译so,支持播放rtmp、rtsp协议
5.支持音频解析pcm、amr、nellymoser、flac、ogg、wav、matroska
6.去掉loading显示,显示实时网速缓冲
7.自定义亮度、音量控件跟随手势变化
8.增加手势滑动视频进度改变,同时中间显示滑动百分比显示
9.快速来回滑动,出现水平和垂直冲突显示
10.水平滑动修改视频进度增加网速缓冲显示
11.增加VideoHolder常用的一些控制方法
12.修改自定义View对应包名
13.VideoView新增setDisplay方法设置显示方式
#### [AAR]
[aar文件](https://github.com/RelinRan/IJKPlayer/blob/master/aar)
```
android {
....
repositories {
flatDir {
dirs 'libs'
}
}
}
dependencies {
implementation(name: 'IJKPlayer', ext: 'aar')
}
```
#### JitPack
项目/build.grade
```
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
```
项目/app/build.grade
```
dependencies {
implementation 'com.github.RelinRan:IJKPlayer:2024.7.22.1'
}
```
#### 权限配置
```
```
#### AndroidManifest.xml
播放页面
```
```
Application
```
android:usesCleartextTraffic="true"
```
文件操作
```
```
path.xml
```
```
#### xml布局
```
```
#### 参数配置
```
//初始化建议配置在Application
IJK ijk = IJK.config();
//设置默认显示方式
ijk.display(Display.AUTO);
//使用硬解码器解码
ijk.option(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "mediacodec", 1);
//自动旋转视频画面
ijk.option(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "mediacodec-auto-rotate", 1);
//处理分辨率变化
ijk.option(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "mediacodec-handle-resolution-change", 1);
//设置最大缓冲区大小(默认是0,表示无限制)
ijk.option(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "max-buffer-size", 1024*1024*5);
//设置最小缓冲帧数
ijk.option(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "min-frames", 60);
//设置最大缓存时长
ijk.option(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "max_cached_duration", 5000);
//设置启动时的探测时间(毫秒)
ijk.option(IjkMediaPlayer.OPT_CATEGORY_FORMAT, "analyzeduration", 400);
//设置分析最大时长(毫秒)
ijk.option(IjkMediaPlayer.OPT_CATEGORY_FORMAT, "analyzemaxduration", 100);
//强制刷新数据包
ijk.option(IjkMediaPlayer.OPT_CATEGORY_FORMAT, "flush_packets", 1L);
//禁用数据包缓冲
ijk.option(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "packet-buffering", 0L);
//设置帧率为30
ijk.option(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "fps", 120);
//设置超时时间
ijk.option(IjkMediaPlayer.OPT_CATEGORY_FORMAT, "timeout", 10000);
//启用无限缓冲模式
ijk.option(IjkMediaPlayer.OPT_CATEGORY_FORMAT, "infbuf", 0);
//启用帧丢弃
ijk.option(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "framedrop", 1);
//跳过环路过滤器(Loop Filter),提高解码性能
ijk.option(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "skip_loop_filter", 48);
//禁用 HTTP 资源范围检测
ijk.option(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "http-detect-range-support", 1);
//启用精确的 seek(定位)
ijk.option(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "enable-accurate-seek", 1);
//清除DNS缓存(为了提高域名解析的效率)
ijk.option(IjkMediaPlayer.OPT_CATEGORY_FORMAT, "dns_cache_clear", 1);
//自动重新连接
ijk.option(IjkMediaPlayer.OPT_CATEGORY_FORMAT, "reconnect", 1);
//调用prepareAsync()方法后是否自动开始播放
ijk.option(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "start-on-prepared", 1);
```
#### rtmp直播流,刚播放时,画面卡顿几秒,没有声音大概4、5秒后都恢复正常
不要配置probesize参数
```
ijk.option(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "opensles", 0);
ijk.option(IjkMediaPlayer.OPT_CATEGORY_FORMAT, "fflags", "nobuffer");
```
#### 播放视频
```
VideoView video = findViewById(R.id.ijk);
//修改默认的显示方式
video.setDisplay(Display.AUTO);
//是否是直播源
video.setLiveSource(true);
//视频控制ViewHolder
VideoHolder holder = video.getViewHolder();
//自定义全屏还是小屏幕显示,不设置就采用默认的逻辑;
video.setOnVideoSwitchScreenListener(orientation -> {
//TODO: 自定显示方式
});
//播放视频
String url = "https://stream7.iqilu.com/10339/upload_transcode/202002/09/20200209105011F0zPoYzHry.mp4";
//开始播放
String source = video.getDataSource();
if (TextUtils.isEmpty(source)) {
video.setDataSource(url);
video.start();
} else {
video.reset();
video.setDataSource(url);
video.prepareAsync();
}
```
#### 颜色配置
```
#03DAC5
#80000000
#DDDDDD
#03DAC5
#E8E8E9
#F0F0F1
#80000000
#03DAC5
#03DAC5
```
#### 尺寸配置
```
14sp
65dp
65dp
8dp
4dp
13sp
20dp
15dp
1dp
20dp
20dp
3dp
2dp
2dp
4dp
```