千家信息网

怎么在Android中使用IJKPlayer视频播放器

发表于:2025-11-11 作者:千家信息网编辑
千家信息网最后更新 2025年11月11日,今天小编给大家分享一下怎么在Android中使用IJKPlayer视频播放器的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章
千家信息网最后更新 2025年11月11日怎么在Android中使用IJKPlayer视频播放器

今天小编给大家分享一下怎么在Android中使用IJKPlayer视频播放器的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

1、封装播放内核

我们都知道需要播放一个视频需要三个过程 1.create MediaPlayer 2.MediaPlayer prepare 3.MediaPlayer 与 Surface 绑定

xinvideoplayer中使用了VideoManager来控制ijkmediaplayer 所有的操作

三个过程 我们使用 HandlerThread + Hander 来实现 第一个过程创建大致可能需要100ms左右,严重影响UI线程!!!

第一个过程: create MediaPlayer

new IjkMediaPlayer() 设置一些播放器回调方法

//IJK 的 Mediaplayer api 类似 Android 系统播放器api//IMediaPlayer.classpublic interface IMediaPlayer{ void setOnPreparedListener(IMediaPlayer.OnPreparedListener var1); //prepareAsync 之后回调方法 void setOnCompletionListener(IMediaPlayer.OnCompletionListener var1); //播放完成回调方法 void setOnBufferingUpdateListener(IMediaPlayer.OnBufferingUpdateListener var1);//当播放网络的数据流的buffer发生变化的时候 void setOnSeekCompleteListener(IMediaPlayer.OnSeekCompleteListener var1);//当seek定位操作完成后 void setOnVideoSizeChangedListener(IMediaPlayer.OnVideoSizeChangedListener var1);//当视频的大小第一次被知道或者发生改变时 void setOnErrorListener(IMediaPlayer.OnErrorListener var1);//当有发生错误 void setOnInfoListener(IMediaPlayer.OnInfoListener var1);//当有信息或者警告 void setOnTimedTextListener(IMediaPlayer.OnTimedTextListener var1); //当媒体的时间数据需要被显示}

第二个阶段 prepare

mediaPlayer.prepareAsync(); 等待回调 IMediaPlayer.OnPreparedListener#onPrepare()

第三个阶段 给IJKMediaPlayer 绑定 Surface 呈现画面

mediaPlayer.setSurface();

2、播放器View

实现 播放器基本方法(IViewPlayer)和 播放内核回调方法(IMediaPlayerListener)

IMediaPlayerListener 是包装 IMediaPlayer 所有接口并通过 Handle 发送到主线程中实现

//IVideoPlayer.javainterface IVideoPlayer{ void start();//开始播放 void pause();//暂停播放 void seekTo(long time); //seekto time void release();//关闭播放 void setVideoPath();//设置视频路径 void onStartFullScreen();//全屏播放 void onBackFullScreen(); //退出全屏 void onResumeVideo();//播放器后台唤起 void onPauseVideo();//切换后台 int getCurrentState();//视频的当前状态 int getCurrentScreenState(); //当前屏幕的状态 例如小屏,大屏,竖屏 long getTcpSpeed();//获取网速 void switchVideoSource(String url,long delay);//切换清晰度 并流畅的切换}public interface MediaPlayerListenerextends IVideoPlayer{ void onPrepared(); void onAutoCompletion(); void onCompletion(); void onBufferingUpdate(int percent); void onSeekComplete(long currentPosition); void onError(int what, int extra); void onInfo(int what, int extra); void onVideoSizeChanged();}

以上接口大致满足了所有播放器的功能要求!!

3.MediaController

public interface IVideoController{ //顾名思义 ViewbindPlayer(IVideoPlayer player); void onChangeVideoStatus(IVideoPlayer player,int old_status, int new_status); void onChangeScreenStatus(IVideoPlayer player,int old_status, int new_status); boolean onChangedNetWork(int currentNetState); void onVideoProgress(int percent, long curr_position, long duration); void unbindPlayer(IVideoPlayer player); boolean isLock(); void onVideoDefinitionSwitched(); void show(); void hide(); boolean isShowing();

BaseVideoPlayer#setVideoController()

播放器的简单接入使用

videoplayer.setVideoPath(url);videoplayer.start();//开始播放//如果需要后台暂停唤起继续播放videoplayer.onVideoResume();videoplayer.onVideoPause();//如果需要后台暂停唤起继续播放全屏时控制返回键问题:if (!VideoPlayerUtils.onBackPressed()) { //返回的正常逻辑}...

播放器的内部实现

预加载需求 & 复用播放器

智能后台&唤起处理

以上就是"怎么在Android中使用IJKPlayer视频播放器"这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注行业资讯频道。

播放器 视频 后台 方法 知识 篇文章 过程 三个 切换 内容 内核 接口 数据 状态 线程 逻辑 阶段 控制 不同 很大 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 数据库表建约束有什么用 关于网络安全的书法作品硬笔 软件开发案例分析指的是什么 数据库监听和服务 安庆网络安全考试 数据库集群技术教程 分析生物信息数据库种类 投篮姿势软件开发 h3c服务器默认管理ip 内蒙古剑仙软件开发有限公 登录学信网显示内部服务器错误 为什么服务器都部署到linux 如何进入服务器管理登录界面 关于网络安全周活动方案 保护孩子个人信息网络安全 青岛一诺网络技术有限公司 ibm服务器维修电源 查询数据库中记录数 中国高铁票抢票服务器 模拟器如何选择服务器 与服务器的网络已中断 wifi显示服务器名称无效 网络安全环境的保证 原神同一服务器搜索不了好友 海阳游戏软件开发外包公司 网络安全教育心得体会700字 天津加工软件开发检测 快递 网络安全 计算机网络技术课程名词解释 软件开发在深圳一般工资多少
0