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

来源:互联网 发布:文件管理网站源码 编辑:程序博客网 时间:2024/05/17 15:20

前言

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() {                    @Override                    public 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了!先写到这里吧!

阅读全文
0 0
原创粉丝点击