第一步:

  //Vlc 播放器    implementation group: 'de.mrmaffen', name: 'vlc-android-sdk', version: '3.0.0'

第二步:

 private LibVLC libVLC;  private  IVLCVout ivlcVout;    private ArrayList options;    private org.videolan.libvlc.MediaPlayer mediaPlayer; public void setVlc() {        options=new ArrayList<>();        options.add(":file-caching=500");//文件缓存        options.add(":network-caching=500");//网络缓存        options.add(":live-caching=500");//直播缓存        options.add(":sout-mux-caching=500");//输出缓存        options.add(":codec=mediacodec,iomx,all");        options.add(":rtsp-frame-buffer-size=1000"); //RTSP帧缓冲大小,默认大小为100000        options.add(":rtsp-tcp");//RTSP采用TCP传输方式        options.add(":sout-rtp-proto={dccp,sctp,tcp,udp,udplite}");//RTSP采用TCP传输方式        jzVideo = findViewById(R.id.jz_video);        libVLC = LibVlcSingle.getLibVLC(options);        mediaPlayer = new org.videolan.libvlc.MediaPlayer(libVLC);        ivlcVout = mediaPlayer.getVLCVout();        ivlcVout.setVideoView(jzVideo);        ivlcVout.attachViews();    }public void play(String path) {        media=new Media(libVLC,Uri.parse(path));        media.setHWDecoderEnabled(false, false);        mediaPlayer.setMedia(media);        media.release();        mediaPlayer.play();        media.setEventListener(new Media.EventListener() {            @Override            public void onEvent(Media.Event event) {                Log.d("VLC- 播放状态:", event.type + "");                switch (event.type) {                    case Opening://打开中                        showDialog1("打开中");                        break;                    case Buffering://缓冲中                        showDialog1("缓冲中");                        break;                    case Paused://暂停中                        showDialog1("暂停中");                        break;                    case Error://播放出错                        showDialog1("播放出错");                        break;                    case Ended://播放出错                        Toast.makeText(LiveActivity.this, "播放完成", Toast.LENGTH_SHORT).show();                        break;                    case Playing://播放中                        if (huds != null) {                            if (huds.isShowing()) {                                huds.dismiss();                            }                        }                        break;                    default:                        if (huds != null) {                            if (huds.isShowing()) {                                huds.dismiss();                            }                        }                        break;                }            }        });    }

xml

 单例:public class LibVlcSingle {    private static LibVLC libVLC = null;    public synchronized static LibVLC getLibVLC(ArrayList options) {        if (libVLC == null) {            if (options == null) {                libVLC = new LibVLC();            } else {                libVLC = new LibVLC(options);            }        }        return libVLC;    }}

更多相关文章

  1. Android菜单实现两种方式
  2. 【Android 内存优化】Bitmap 内存缓存 ( Bitmap 内存复用 | 弱引
  3. 我今天的面试题,注册广播有几种方式,这些方式有何优缺点?请谈谈Andr
  4. Android 代码设置Color的几种方式
  5. Android控件隐藏方式 .
  6. Android客户端与服务端交互-客户端GET方式登录和客户端POST方式
  7. Android获取存储卡路径的方式
  8. android中设置AlertDialog的大小 .
  9. android 使用gdb调试的方式

随机推荐

  1. PHP基础课第四次作业
  2. 请实例演绎你对回调函数与递归函数的理解
  3. 【前端 · 面试 】HTTP 总结(七)—— HTTP
  4. PHP:0806回调函数和递归函数的理解
  5. 2021年8月6日作业:回调函数和递归函数的认
  6. php之灭绝回调函数,师太递归函数
  7. 0806-请实例演绎你对回调函数与递归函数
  8. 回调函数、递归函数
  9. 对回调函数和递归函数的理解
  10. 回调函数,递归函数