1.下载libvlc的arr文件
libvlchttps://download.csdn.net/download/u010855711/85450866
下载后将libvlc文件夹放入app的同级目录下
2.在Android工程的build.gradle中配置
dependencies {
implementation 'org.videolan.android:libvlc-all:3.1.12'
}
3.activity中代码
private LibVLC mLibVLC = null;
private MediaPlayer mMediaPlayer = null;
private SurfaceView textureView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textureView = findViewById(R.id.texture_video);
}
@Override
protected void onDestroy() {
super.onDestroy();
mMediaPlayer.release();
mLibVLC.release();
}
@Override
protected void onStart() {
super.onStart();
final ArrayList args =new ArrayList<>();//VLC参数
args.add("--rtsp-tcp");//强制rtsp-tcp,加快加载视频速度
args.add("--aout=opensles");
args.add("--audio-time-stretch");
//args.add("--sub-source=marq{marquee=\"%Y-%m-%d,%H:%M:%S\",position=10,color=0xFF0000,size=40}");//这行是可以再vlc窗口右下角添加当前时间的
args.add("-vvv");
mLibVLC =new LibVLC(this, args);
mMediaPlayer =new MediaPlayer(mLibVLC);
Rect surfaceFrame =textureView.getHolder().getSurfaceFrame();
//设置vlc视频铺满布局
//
//mMediaPlayer.getVLCVout().setWindowSize(layout_video.getWidth(), layout_video.getHeight());//宽,高 播放窗口的大小
//
//mMediaPlayer.setAspectRatio(layout_video.getWidth()+":"+layout_video.getHeight());//宽,高 画面大小
mMediaPlayer.setScale(0);//这行必须加,为了让视图填满布局
//添加视图
IVLCVout vout =mMediaPlayer.getVLCVout();
vout.setVideoView(textureView);
vout.attachViews();
Uri uri = Uri.parse("");//rtsp流地址或其他流地址//"https://media.w3.org/2010/05/sintel/trailer.mp4"
final Media media =new Media(mLibVLC, uri);
int cache =10;
media.addOption(":network-caching=" + cache);
media.addOption(":file-caching=" + cache);
media.addOption(":live-cacheing=" + cache);
media.addOption(":sout-mux-caching=" + cache);
media.addOption(":codec=mediacodec,iomx,all");
mMediaPlayer.setMedia(media);//
media.setHWDecoderEnabled(false, false);//设置后才可以录制和截屏,这行必须放在mMediaPlayer.setMedia(media)后面,因为setMedia会设置setHWDecoderEnabled为true
mMediaPlayer.setEventListener(new MediaPlayer.EventListener() {
@Override
public void onEvent(MediaPlayer.Event event) {
if (event.type== MediaPlayer.Event.Playing){
Log.w("main","正在播放");
}else{
}
}
});
mMediaPlayer.play();
}
@Override
protected void onStop() {
super.onStop();
mMediaPlayer.stop();
mMediaPlayer.detachViews();
}
4.只需将流地址的那一行换成自己的地址就可以。
5.xml中代码,只需加一个surfaceview即可。
<SurfaceView
android:id="@+id/texture_video"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
简单么?就这么简单!