# 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 //音频同步 如果音视频帧的播放时间大于当前参考时钟上的时间,则不急于播放该帧,直到参考时钟达到该帧的时间戳; 如果音视频帧的时间戳小于当前参考时钟上的时间,则需要“尽快”播放该帧或丢弃,以便播放进度追上参考时钟。 参考时钟的选择也有多种方式: 选取视频时间戳作为参考时钟源 选取音频时间戳作为参考时钟源 选取外部时间作为参考时钟源 考虑人对视频、和音频的敏感度,在存在音频的情况下,优先选择音频作为主时钟源。 ```