# bzijkPlayer
**Repository Path**: hnyer/bzijkPlayer
## Basic Information
- **Project Name**: bzijkPlayer
- **Description**: 基于 bilibili/ijkplayer 0.8.8 + cmake
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2020-08-12
- **Last Updated**: 2022-06-10
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
```text
ijkplayer使用AndroidStudio/CMake编译
该工程是基于bilibili/ijkplayer 0.8.8, 改造成cmake构建, 这样方便调试与学习
https://www.bzblog.online/wordpress/index.php/2020/06/17/bzijkplayer/
```
```text
bilibili/ijkplayer工程地址:
https://github.com/bilibili/ijkplayer
```
```text
//直接播放264裸流的问题
https://github.com/bilibili/ijkplayer/issues/3558
https://github.com/bilibili/ijkplayer/issues/2957
https://github.com/bilibili/ijkplayer/issues/551
https://www.jianshu.com/p/9769802758f4 //???
//获取yuv数据 进行美颜、贴纸等二次开发
https://github.com/bilibili/ijkplayer/issues/4820
https://github.com/bilibili/ijkplayer/issues/2674
https://github.com/bilibili/ijkplayer/issues/301
// 播放265数据
https://github.com/bilibili/ijkplayer/issues/1628
//保存视屏 、边播边缓存
https://github.com/bilibili/ijkplayer/issues/1166
方案1:如果是在线的一些文件可以使用AndroidVideoCache进行播放。(有一些bug)。但是不支持 byte[]帧数据这种场景的保存。
//截屏功能
//播放264文件
//播放265文件
ijkplayer在视频解码上支持软解和硬解两种方式,可在起播前配置优先使用的解码方式,播放过程中不可切换。硬解使用MediaCodec。
ijkplayer中的音频解码只支持软解,暂不支持硬解。
```
## 文档
```text
IjkMediaPlayer // ijkplayer自己实现的播放器
IjkVideoView // 框架封装的播放控件。 自己觉得不合适可以参考这个自己封装一个。
// init player
IjkMediaPlayer.loadLibrariesOnce(null);
IjkMediaPlayer.native_profileBegin("libijkplayer.so");
// 释放native层
IjkMediaPlayer.native_profileEnd();
IjkMediaPlayer的setDataSource是不建议重新赋值的,每次更改视频源都需要:
player.release() -> create new player -> player.setDataSource。
//变速播放 ,范围[0.5 ,2 ]
((IjkMediaPlayer) mMediaPlayer).setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "soundtouch_enable", 1);
((IjkMediaPlayer) mMediaPlayer).setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "soundtouch", 1);
((IjkMediaPlayer) mMediaPlayer).setSpeed(speed);
// 开启硬解
ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "mediacodec", 1);
//设置音量 [0~1]
public native void setVolume(float leftVolume, float rightVolume);
```
```text
//音频同步
如果音视频帧的播放时间大于当前参考时钟上的时间,则不急于播放该帧,直到参考时钟达到该帧的时间戳;
如果音视频帧的时间戳小于当前参考时钟上的时间,则需要“尽快”播放该帧或丢弃,以便播放进度追上参考时钟。
参考时钟的选择也有多种方式:
选取视频时间戳作为参考时钟源
选取音频时间戳作为参考时钟源
选取外部时间作为参考时钟源
考虑人对视频、和音频的敏感度,在存在音频的情况下,优先选择音频作为主时钟源。
```
