前言

MusicPlayer 是一款基于vlc播放器开发的一个音乐播放器,你也可以理解为在此核心上的搬砖之路,核心的内容并不是我写的,因此在正式写blog之前,感谢那些vlc核心的开发人员让我用到这么好用的播放器,本片文章主要是在此基础上添加一些我们常用的业务逻辑!本篇文章的目的是简单介绍此项目的用法,并且记录自己在使用过程中的一些心得,如果有错欢迎指正!本篇文章未经授权不得转载!

正文

入行Android开发也接近三年了,这三年中也遇到过坑无数,也学到了很多东西!我所呆的这两家公司都是跟多媒体有关,因此,我也是跟播放器打交道有一段时间了,公司产品不停的更迭,再次过程中,产品的需求也是越来越奇葩,加上一些服务器的选择,播放器的选择也是越来越重要,我先简单的介绍一下我们android开发常用的几款开源播放器!


  • Mediaplayer

  • ijkplayer

  • vitamio

  • vlc 播放器

Mediaplayer(系统自带的播放器)

这款播放器是系统自带的播放器,具体api我就不多数,网上一搜一大把,我来说说我为什么不用这款播放器,这款播放器在播放格式上基本上是能播放所有的音视频封装格式(本地播放),在很多公司的使用过程中,音视频基本上是有两种方式提供给播放器的,一种是以文件的方式让播放器播放,还有一种是以流媒体的方式让播放器播放,其中选择当然是根据公司的业务需求所决定,当然我们公司是没有财力搭建一个流媒体播放器的,因此公司使用的主要服务器就是一个文件服务器,提供一个http的文件地址去下载播放,我们的Mediaplayer是支持这种播放的方式,但是很可惜,他并不支持流媒体的播放,因此选择还是看具体的需求!

ijkplayer 音乐播放器

这款大名鼎鼎的播放器也是我比较喜欢的播放器,这款播放器是现在网上主流的流媒体播放器,bilibili网站的播放器就是根据这个开源框架开发的播放器,这款播放器也是我向搭建推介的一款播放器,要是开发者使用的服务器是流媒体播放器建议大家使用。但是美中不足的是,这款播放器并不能播放上述的文件服务器的多媒体,他只能提供流媒体服务器式的播放,要是你喷我说,现在还有什么公司不搭建流媒体了,这么low。我只能说,这种东西跟公司有关跟技术无关,因此我个人认为某公司的播放器是无罪的,某大佬马上要回归,祝贺一下,挺你的技术无罪!!

vitamio 播放器

这款播放器让人又爱又疼,他是能满足以上两款播放器的所有需求的,既能播放文件的多媒体,又能播放流媒体式的多媒体,但是唯一不足的就是,这个播放器是个人免费,公司是要授权给钱的啊!具体的,自行百度!

vlc 播放器

这款播放器是我们吹的主角,为什么我会选择用这款播放器的,当然跟公司需求有关系啦,当初的的需求是播放文件式服务器的多媒体文件,于是我当时选用的是Mediaplayer播放器去播放的,后来经理说,我们的产品可能要对接一部分电视服务,电视的是以rtsp开头的流媒体,于是乎在开发过程中选用了vitamio(此中xxxx不解释),这件事没那么简单,在产品开发快要完成的时候,突然来了个需求要播放组播多媒体,我了个去,这个组播是有台组播机器,能转发一个组播源,同一个局域网的都可以获取其数据,但是vitamio不能播放这种音视频啊,这可难为死我们了,于是乎问了谷歌爸爸(再次黑一波百度广告多,重复的东西多),找到了这款神器 vlc播放器,他不仅能播放文件流,还能播放流媒体,并且这个爸爸还能播放组播电视,最关键的是免费的!卧槽!有什么理由不用,瞬间有爱!

MusicPlayer 说说主角吧

一款基于vlc(2.0+)封装的音乐播放器,方便于以后搬砖使用,尽量简化于播放器的逻辑处理,让开发者专注于接口调用和业务实现,主要api的业务功能我给大家简单介绍下,如果你喜欢,欢迎使用!无论你是在service还是在activity中调用都能很快的集成你想要的,对接api列表能迅速的完成页面的对接!现在附上github链接:
https://github.com/xmtggh/MusicPlayer
希望大家看到后帮忙star一下

  • 播放
  • 暂停
  • 上一首
  • 下一首
  • 重置
  • 随机播放
  • 顺序播放
  • 单曲循环
  • 播放进度
  • 声音大小设置

使用方法

1.根目录下的build.gradle添加

    maven { url "https://jitpack.io"}
    allprojects {repositories {google()jcenter()maven { url "https://jitpack.io"}}}

2. 使用的model中添加

    compile 'com.github.xmtggh:musicPlayer:1.0.1'

初始化示例

 mPlayer = new Player.Buidler().setAutoPlay(true).setContext(MainActivity.this).setPlayList(mPlayList).setEventListener(new Player.PlayerEventListener() {@Overridepublic void onEvent(MediaPlayer.Event event) {switch (event.type) {case MediaPlayer.Event.EndReached:Log.d("music", "播放完毕");break;case MediaPlayer.Event.Playing:Log.d("music", "正在播放");break;case MediaPlayer.Event.Paused:Log.d("music", "播放暂停");break;case MediaPlayer.Event.Stopped:Log.d("music", "播放停止");break;case MediaPlayer.Event.EncounteredError:Log.d("music", "播放异常");break;case MediaPlayer.Event.PositionChanged:Log.d("music", "最大播放进度" + mPlayer.getMaxPostion());Log.d("music", "当前播放进度" + mPlayer.getCurrentPostion());break;default:break;}}}).create();

初始化api

setAutoPlayer(true:自动播放,false:手动播放)

是否自动播放,即无需调用play方法,初始化完成后直接播放

setContext

获取当前上下问对象

setPlayList

初始化播放列表

setEventListener

播放器时间监听方法,示例代码已包含其意义!

操作api介绍

包括一些基本的操作,上一首,下一首,暂停,开始,重置,播放单曲!

mPlayer.start();

开始播放

mPlayer.reset();

重置当前播放歌曲

mPlayer.pause();

暂停播放

mPlayer.nextSong();

播放下一首,当前只能在有播放列表的情况下使用

mPlayer.preSong();

播放上一首

mPlayer.getMaxPostion()

获取当前歌曲最大进度long类型

mPlayer.getCurrentPostion()

获取当前播放进度

mPlayer.setProgress(long progress)

设置播放进度

mPlayer.setVolume(int progress)

设置播放音量大小,目前最大值为300 可根据需求动态调整

mPlayer.randomModel()

设置为随机播放

mPlayer.sequenceModel()

设置为顺序播放

mPlayer.loopModel()

设置为单曲循环

最后

记得添加网络权限哦

    <uses-permission android:name="android.permission.INTERNET" />

版本信息

1.0.2(尚未规划(解决bug为主))
1.0.1(已完成2017.12.14)
1.0.0(已完成2017.11.16)

版本内容

1.0.0

初次提交,播放器可设置在service或者activity中运行,具有播放,暂停,上一首,下一首,开始,重置,获取播放进度等功能

1.0.1

添加可拖动进度api 设置音量大小,添加播放模式(随机,顺序,单曲播放等)

1.0.2

尚未完成,目前规划修复一些未知的bug

闭幕

欢迎大家来fork和点赞,若是有bug请随意提起,欢迎各种商用或者demo,免费纯净版!最后当前会留一些彩蛋,这是我搬砖之路第一篇文章,我不知道在座的各位你是否看到这里,给看到的说说我在vlc播放器使用过程中遇到的一些坑,流媒体的文件自然不必多说,若是大家在播放文件式的多媒体过程中,是无法播放metadata 头在尾部的MP4文件的,那些MP4文件的metadata 是在尾部的查看之法请大家自行百度,这个是针对视频而言的,并且avi格式的视频是没有视频只有声音的,因此一个格式工厂就能搞定的东西我就不多bb了!先写到这里吧!

搬砖之路----MusicPlayer 一个基于Vlc(2.0+)开发的android音乐播放器--浅析在android开发过程中播放器选择之路!相关推荐

  1. 一个基于cocos2d-x 3.0和Box2d的demo小程序

    一个基于cocos2d-x 3.0和Box2d的demo小程序 p图demo小应用.想怎么p就怎么p 本文參考于http://blog.csdn.net/xiaominghimi/article/de ...

  2. 开发一个基于Dalvik字节码的相似性检测引擎,比较同一款Android应用程序的不同版本之间的代码差异(二)

    上文我们说过,<针对Dalvik字节码的相似性检测引擎,比较同一款Android应用程序的不同版本之间的代码差异>这篇文章计划分两个部分来讲解,上文只介绍了如何利用Quarkslab公司开 ...

  3. DeskViewer基于Silverlight 2.0开发的个性相册展示系统

    这是一个DeskViewer基于Silverlight 2.0开发的个性相册展示系统,通过XML取得图片和音乐的数据,图片的排列是随机的,可以重排,可以对图片的缩放.旋转.拖放.链接.下载.显示原图等 ...

  4. 基于opencv tensorflow2.0开发的人脸识别锁定与解锁win10屏幕实战

    基于opencv tensorflow2.0开发的人脸识别锁定与解锁win10屏幕实战 基于opencv tensorflow2.0开发的人脸识别锁定与解锁win10屏幕 前言 运行python环境 ...

  5. 基于VC++6.0开发俄罗斯方块(五)

    开始游戏 一.开始游戏模块概述 二.显示俄罗斯方块 注意:开始游戏之后,俄罗斯方块会显示在游戏窗口和右侧的方块预览界面上,这两部分是有联系的,在方块的预览界面上出现的方块类型,就是在游戏窗口下一个会出 ...

  6. 基于经典蓝牙的安卓蓝牙APP开发(基于蓝牙2.0开发,例:HC-05)

    基于经典蓝牙的安卓蓝牙开发-串口 一.展现广播的三种方式 1.通知: 2.对话框: 3.消息提示框 2.在使用Android蓝牙适配器中的startDiscovery需要先打开定位服务 3.在连接蓝牙 ...

  7. nubia ui 5.0 android,国内首家 基于安卓5.0开发nubia UI公测

    [PConline 资讯]3月9日最新消息,受安卓5.0的吸引和Moto在国内使用Android 5.0原生系统的影响,国内手机厂商也纷纷推出基于Android 5.0的系统升级,其中nubia手机的 ...

  8. 大神级教程!300分钟撸一个基于Redis 6.0 版本的高并发架构

    刚好原先公司搞职位调整,我不太满意,赶上这波金三银四的面试浪潮,干了也有5年的后端开发了,不是大神也是有实战经验的,我就自信满满地去面了几家大厂,结果就遇到... 面试官这夺命连环12问,谁顶得住? ...

  9. 基于Springboot + Vue2.0开发的 IM 在线聊天

    1. 项目介绍 多聊Chat是一个网页版在线即时聊天项目,前端使用 Element-ui,后端采用了基于 Springboot开发的,并使用 WebSocket 服务进行消息实时推送. 目前后端 We ...

最新文章

  1. Chemistry.AI | 基于卷积神经网络(CNN)预测分子特性
  2. julia(6)-循环与猜数字
  3. twitter api 无法连接_光大银行牟健君:金融API的安全问题和应对技术
  4. 【HYSBZ - 1088 】扫雷Mine (简单dp)
  5. 为什么我做数据库类的程序要用代码生成器,而且是前前后后,反反复复 [转]...
  6. 小程序开发工具不显示tobar图标
  7. 转载:性能计数器分析
  8. New Adventure----GUI Design Studio
  9. Apache-Commons-FileIOUtils工具类常用方法使用
  10. sftp服务器配置管理系统,配置sftp服务器
  11. 用友2003年度NC_SCM项目经理/高级顾问认证考试试题及答案
  12. 一万年太久,只争朝夕,男儿有泪不轻弹,只是未到伤心处!!!!!!
  13. android 进制转换的方法
  14. 笨方法学python 习题29-31
  15. 计算机异常断电后无法启动,电脑突然断电后开不了机怎么办【解决方法】
  16. 下载漫画网站图片示例
  17. 【入门】人见人爱A+B:时间相加
  18. SATA2 硬盘 系统盘 显卡黑屏_黑苹果硬件选购指南主板amp;硬盘amp;WI
  19. 基于SpringBoot开发的物联网风电监测系统源码【源码分享】
  20. 事实表的分类:事务事实表,周期快照事实表,累计快照事实表

热门文章

  1. python卡通滤镜_Python批量为照片应用卡通动漫滤镜
  2. Linux kali内网渗透之ARP断网攻击
  3. 【总结】10.26.2017 考试总结与解题报告
  4. FPGA跨时钟域信号处理之亚稳态问题
  5. 模具设计的设计思路及方法
  6. 关于华清远见的毕业总结
  7. FTP下载报错:550 Failed to open file
  8. 对数函数log的物理含义
  9. 如何用TestNG满足开发自测?
  10. beehive 源码阅读- go 语言的自动化机器