摘要: 市场上对音视频播放器的需求有很多,当然很多有趣的App都是与音视频播放有关,那么如何快速地打造一款适应市面上不同格式的音视频呢?MaoKePlayer猫客影音播放器便是一款非常简洁的音视频播放器插件,能够很方便地帮助开发者实现几乎所有格式的音视频播放。

MaoKePlayer

猫客影音播放器 - 基于ijk打造的一款万能音视频播放器插件

  • 支持AVI、WMV、MPEG、MP4、M4V、MOV、AS F、FLV、F4V、RMVB、RM、3GP、VOB等视频格式。
  • 支持CD、WAVE、AIFF、MPEG、MP3、MPEG-4、MIDI、WMA、RealAudio、VQF、OggVorbis、AMR、APE、FLAC等音频格式。

引入MaoKePlayer插件

  1. 在根gradle文件中引入jitpack仓库:
allprojects {repositories {...maven { url 'https://jitpack.io' }}
}
  1. 在工程gradle文件中引入MaoKePlayer插件
dependencies {implementation 'com.github.zrunker:MaoKePlayer:1.0'
}

MKPlayer

MKPlayer媒体播放实现类,继承自IMKPlayer,用来对外提供了音视频播放、设置等一系列API,如:

public interface IMKPlayer {/*** 是否循环*/boolean isLooping();/*** 屏幕常亮*/void setScreenOnWhilePlaying(boolean bool);/*** 设置流的类型** @param streamtype 类型,如:AudioManager.STREAM_MUSIC*/void setAudioStreamType(int streamtype);/*** 设置音量*/void setVolume(float left, float right);/*** 是否循环播放** @param looping 是否循环*/void setLooping(boolean looping);/*** 是否正在播放*/boolean isPlaying();/*** 播放指定路径视频** @param path 资源路径*/void prepareAsync(String path) throws IOException;/*** 设置呈现** @param sHolder Holder显示*/void setDisplay(SurfaceHolder sHolder);/*** 开始播放*/void start();/*** 暂停播放*/void pause();/*** 停止播放*/void stop();/*** 回收*/void release();/*** 重置*/void reset();/*** 获取当前进度*/long getCurrentPosition();/*** 设置进度** @param position 进度值*/void seekTo(long position);/*** 获取资源总长度*/long getDuration();/*** 获取播放资源*/String getDataSource();/*** 获取视频宽度*/int getVideoWidth();/*** 获取视频高度*/int getVideoHeight();/*** 采样长宽比:num / den*/int getVideoSarNum();/*** 采样长宽比:num / den*/int getVideoSarDen();/*** 获取Audio Session ID*/int getAudioSessionId();
}

如此同时,MKPlayer还支持视频配置,详情可查看:
cc.zrunker.android.maokeplayerlib.mkplayer.core.option.IMKOption

// 获取MKPlayer中默认视频配置IMKOption
public IMKOption getMkOption() {return mkOption;
}

MKMediaView(视频)

MKMediaView是基于SurfaceView用来呈现视频渲染结果,此View不包含视频控制器,用户可以自行定制想要的控制器效果。

使用:

  1. 在布局中添加MKMediaView:
<cc.zrunker.android.maokeplayerlib.mkplayer.video.media.MKMediaViewandroid:id="@+id/media_view"android:layout_width="match_parent"android:layout_height="wrap_content"app:isAutoSize="true"app:isKeepScreenOn="true"app:isZOrderOnTop="true" />
  1. 执行MKMediaView播放:
MKMediaView mkMediaView = findViewById(R.id.media_view);
mkMediaView.addOnErrorListener(new IMKListener.OnErrorListener() {@Overridepublic void onError(MKPlayer mkPlayer, int what, int extra, String error) {}
});
mkMediaView.prepareAsync("视频地址");

懒人模式 - MKVideoView(视频)

MKVideoView是针对于视频播放,在MKMediaView的基础上进行了包装。它支持绑定视频控制器,视频播放相关监听器等。

使用:

  1. 在布局中添加MKVideoView:
<cc.zrunker.android.maokeplayerlib.mkplayer.video.MKVideoViewandroid:id="@+id/mkVideo"android:layout_width="match_parent"android:layout_height="wrap_content"app:isBindController="true" />
  1. 执行MKVideoView播放:
MKVideoView mkVideoView = findViewById(R.id.mkVideo);
mkVideoView.setOnErrorListener(new IMKListener.OnErrorListener() {@Overridepublic void onError(MKPlayer mkPlayer, int what, int extra, String error) {Toast.makeText(MainActivity.this, error, Toast.LENGTH_SHORT).show();}
});
mkVideoView.play("视频地址");

关于视频控制器,详情可查看:cc.zrunker.android.maokeplayerlib.mkplayer.video.controller.MKController

// 获取MKVideoView中默认视频控制器
public MKController getDefaultController() {return defaultController;
}

AudioExecutor(音频 - 执行类)

AudioExecutor是专门针对于音频播放的封装类,它支持几乎所有常见的音频播放的操作API,例如播放音频:

AudioExecutor audioExecutor = new AudioExecutor(this);
audioExecutor.play("音频地址");

通常为防止内存泄露,会在Activity/Fragment的销毁方法中执行AudioExecutor的销毁事件:

@Override
protected void onDestroy() {super.onDestroy();audioExecutor.destroy();
}

VisualizerView(音频 - 音波图)

VisualizerView是用来显示音频的傅立叶数据图,目前支持四种音波效果图。

使用:

  1. 在布局中添加VisualizerView:
<cc.zrunker.android.maokeplayerlib.mkplayer.audio.visualizer.view.VisualizerViewandroid:id="@+id/visualizerView"android:layout_width="match_parent"android:layout_height="wrap_content" />
  1. 绑定VisualizerView,并执行AudioExecutor播放,注意四种音波图选择一种即可,不选择将展示默认音波图效果:
VisualizerView visualizerView = findViewById(R.id.visualizerView);
// 第一种音波图,也是默认音波图
visualizerView.addCircleRenderer();
// 第二种音波图
visualizerView.addBarGraphRenderers();
// 第三种音波图
visualizerView.addCircleBarRenderer();
// 第四种音波图
visualizerView.addLineRenderer();
// 绑定AudioExecutor
AudioExecutor audioExecutor = new AudioExecutor(this, visualizerView);
// 播放音频
audioExecutor.play("音频地址");
  1. 注意事项:Android 6.0+版本需要动态申请录音权限android.permission.RECORD_AUDIO,否则将无法展示音频图效果。

阅读原文

推荐阅读:

  1. https://github.com/zrunker/ZLameMp3
  2. http://ibooker.cc/article/355/detail
  3. https://github.com/zrunker/ZMediaPlayer

MaoKePlayer猫客影音播放器相关推荐

  1. CMP FLASH影音播放器插件

    我搜索视频播放插件很久了,一直没有找到合适的(要么功能不完善.要么有水印.要么界面不美观),今天终于找到了一个不错的视频播放插件--CMP4 Flash 影音播放器插件. CMP是一款免费的在线Fla ...

  2. 开源项目之Splayer 射手影音播放器

    Splayer(射手影音播放器)是一款高画面.低消耗.智能化.精致美观的影音播放器. 具有如下八个独创: 独创ShaderEngineTM图像增强引擎,4倍速驱动,降低画面噪点,锐利画质呈现,低画质视 ...

  3. Android-Frame布局,UI布局切换,录音,照相机,影音播放器,音频播放器

    <FrameLayout anroid:layout_weight="1"> <ImageView android:scaleType="fitCent ...

  4. 修改射手影音播放器字幕保存路径的两种方法

    射手影音播放器--高清时代必备的美剧播放利器,除了轻巧的体积和易用的操作,最大的亮点莫过于可以通过射手网智能匹配下载字幕.不知出于何种考虑,在新版的射手影音中取消了很多高级设置,比如修改字幕保存路径的 ...

  5. 强大的多媒体播放器:射手影音播放器SPlayer for Mac

    射手影音SPlayer for Mac是一款功能齐全的媒体播放器,射手影音能够播放几乎所有类型的视频文件.splayer具有内置翻译系统,集成了实时语音识别和NLP(自然语言改进)技术,可帮助您添加字 ...

  6. Win7迅雷影音播放器右键菜单的字幕选项是灰色的解决方法

    迅雷影音播放器能够支持各种不同的视频解码,而且还有在线匹配字幕的功能,用户可以在线播放各种热门大片,也可以本地播放收藏的经典大片,很多用户都喜欢使用.但是最近有Win7系统用户在使用迅雷影音播放视频的 ...

  7. 视频播放器 影音播放器PotPlayer v1.7.17891 绿色无广告版

    说明 PotPlayer是韩国最大门户网 Daum 公司为旗下TV吧/点播吧/实况吧量身打造的一款多媒体免费视频播放器.集点播,视屏收视,媒体分享,在线聊天为一体.内置 DXVA1/2 源生支持MPE ...

  8. 1905影音播放器 v4.0.0 官方版

    1905影音播放器 v4.0.0 官方版 软件大小:2.58MB 软件语言:简体中文 软件类别:影音播放 软件授权:官方版 更新时间:2015-02-14 应用平台:/Win8/Win7/WinXP ...

  9. OmniPlayer Pro macOS 全能影音播放‪器,还支持无线投屏

    有了「Movist」,有了「IINA」,为什么还需要「OmniPlayer Pro」呢?几个亮点功能,了解一下. 1.无线投屏 「OmniPlayer Pro」macOS 全能影音播放‪器,还支持无线 ...

最新文章

  1. 使用Jittor实现Conditional GAN
  2. AngularJs学习笔记--Forms
  3. 十二、增加Department
  4. wordpress 插件_如何为您的Web应用程序创建WordPress插件
  5. 现代软件工程 10 绩效管理
  6. P2617 Dynamic Rankings
  7. Windows 7 Gadget的打包问题
  8. php封装webservice_php实现webservice实例_PHP
  9. springboot获取apk包名、app名称、版本名称、版本号
  10. 《One-shot Voice Conversion by Separating Speaker and Content Representations with Instance Normaliz》
  11. 计算机投诉信英语作文,一封投诉信英语作文(精选5篇)
  12. 为什么电脑安装qq后显示没网络连接服务器,能上QQ电脑却无法上网怎么解决
  13. Python爬虫系列之唯品会商品数据采集
  14. 学计算机大学报什么专业好就业前景,学哪些专业就业前景好?附未来最吃香的十大专业...
  15. 奇安信漏扫设备与堡垒机问题解析
  16. 在ubuntu上安装nodebb
  17. PS学习-人像照片综合处理(三)--模拟迷幻LOMO风格
  18. js获取mysql数据库数据类型_怎么利用JS将从数据库中读取出来的日期型格式化为想要的类型...
  19. 【挨踢人物传】Vage:高级DBA的突破之路(第13期)
  20. 2021年电工(初级)考试内容及电工(初级)证考试

热门文章

  1. 比“永恒之蓝”更厉害的“永恒之石”来了 网络战争一触即发
  2. Templates should only be responsible for mapping the state to the UI. Avoid placing tags with side-e
  3. 沈晓杰:必须清算给公众造成巨大损失上书者
  4. Linux之安装Linux详细步骤
  5. 计算机专业毕业,有人Offer 50w,有人挂科重修!
  6. 电源正负极接反烧板的解决方法
  7. StringUtils之isBlank分析
  8. TCP-Nagle:代码版本重新解释Nagle算法
  9. 《啊哈!算法》——快速排序
  10. python交叉验证法_Python实现K折交叉验证法的方法步骤