Android使用VLC播放视频和直播流

1.下载libvlc的arr文件

libvlcicon-default.png?t=M4ADhttps://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"/>

简单么?就这么简单!

猜你喜欢

转载自blog.csdn.net/u010855711/article/details/124946297