我利用了大名鼎鼎的vlc来播放媒体。它可以播放来自网络、摄像头、磁盘、光驱的文件,支持包括MPEG 1/2/4, H264, VC-1, DivX, WMV, Vorbis, AC3, AAC等格式的解码。
但是libvlc对于普通的开发者还是有一些门槛的,为此,我封装了一个超级简单的库,来帮助大家使用libvlc。
在我们的项目根目录下的build.gradle,引入jitpack:
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
然后在我们项目的app下的引入库:
dependencies {
implementation 'com.github.mafanwei:libvlc:Tag'
}
写本文时,tag为0.0.5,基于libvlc 3.2.5,可以通过链接查看最新的版本。
使用起来也非常的简单,只需要在我们需要播放媒体的activity下:
//创建一个builder对象
VlcVideoLibrary.Builder builder = new VlcVideoLibrary.Builder(context,true);
//设置一个要渲染的object: Surface/SurfaceView/TextureView/SurfaceTexture
builder.setSurfaceView(surfaceView);
//创建 VlcVideoLibrary对象
VlcVideoLibrary vlcVideoLibrary = builder.create();
//设置一个播放url,比如 rtsp.
vlcVideoLibrary.setPlayUrl("rtsp://192.168.31.192:1234");
//设置输出
vlcVideoLibrary.setVlcVout();
//开始播放
vlcVideoLibrary.startPlay();
如果你不想播放trsp想播放别的流媒体,只需要改播放的url就可以了
常见的协议头有:
http rtsp rtmp mms ftp
如果想播放文件,可以使用我封装的
setPlayFile
,只需要传一个文件路径就可以了,或者使用setPlayUrl
传入file://路径即可。我设置了建造者模式的builder,其中有很多的api,方便大家设置参数。大家看名称就能知道具体意思,在这里就不一一叙述了。
我还保留的
player
接口,你可以自己拿到,实现追踪媒体,快进,慢放,缩放等等一系列的功能。
如果需要更多的api,或者有更好的idea,可以在github上提issue/pr给我。
地址如下:github地址,欢迎star!
如果你觉得对你有用,请帮助我。
作者:mafanwei