TestActivity.java 5.3 KB
package com.cnlive.demo.video;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.TextureView;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

import com.cnlive.libs.video.video.MediaPlayer;
import com.cnlive.libs.video.video.base.IMediaPlayer;

import java.io.IOException;

public class TestActivity extends AppCompatActivity {

    private MediaPlayer firstPlayer;
    private MediaPlayer secondPlayer;

    //负责配合mediaPlayer显示视频图像播放的surfaceView
    private SurfaceView surface;
    private SurfaceHolder surfaceHolder;

    private boolean isFirst = true;

    private Button changeBtn;
    private Button prepareBtn;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_test);

        surface = (SurfaceView) findViewById(R.id.surfaceView);
        surfaceHolder = surface.getHolder();
        changeBtn = (Button) findViewById(R.id.prepare);
        changeBtn.setOnClickListener(listener);

        prepareBtn = (Button) findViewById(R.id.create);
        prepareBtn.setOnClickListener(listener);

        initFirstPlayer(true);
    }

    View.OnClickListener listener = new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            //判断切换到哪一个MediaPlayer
            switch (v.getId()) {
                case R.id.prepare:
                    if (isFirst && secondPlayer != null) {
                        //点击按钮切换到第二个MediaPlayer
                        firstPlayer.setDisplay(null);
//                        secondPlayer.setDisplay(surfaceHolder);
                        secondPlayer.setPlayerMute(0);
                        firstPlayer.release();
                        firstPlayer = null;
                        isFirst = false;
                    } else if (!isFirst && firstPlayer != null){
                        //点击按钮切换到第一个MediaPlayer
                        secondPlayer.setDisplay(null);
//                        firstPlayer.setDisplay(surfaceHolder);
                        firstPlayer.setPlayerMute(0);
                        secondPlayer.release();
                        secondPlayer = null;
                        isFirst = true;
                    }else {
                        Toast.makeText(TestActivity.this, "Player为null,请先准备视频", Toast.LENGTH_SHORT).show();
                    }
                    break;
                case R.id.create:
                    if (firstPlayer == null) {
                        initFirstPlayer(false);
                    }
                    if (secondPlayer == null)
                        initNextPlayer();
            }
        }
    };

    private void initFirstPlayer(final boolean isFirstTime) {
        //初始化第一个MediaPlayer,在本demo中需要传入是否是第一次初始化,如果不是第一次则需要将player设置为静音
        firstPlayer = new MediaPlayer(getBaseContext());
        firstPlayer.setOnPreparedListener(new IMediaPlayer.OnPreparedListener() {
            @Override
            public void onPrepared(IMediaPlayer iMediaPlayer) {
                firstPlayer.setDisplay(surfaceHolder);
                firstPlayer.start();
                if (isFirstTime) {
                    firstPlayer.setPlayerMute(0);
                } else {
                    firstPlayer.setPlayerMute(1);
                }
            }
        });

        firstPlayer.setBufferTimeMax(3);
        firstPlayer.setTimeout(5, 30);


        try {
            firstPlayer.setDataSource("rtmp://live.hkstv.hk.lxdns.com/live/hks");
            firstPlayer.prepareAsync();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    private void initNextPlayer() {
        //初始化第二个MediaPlayer
        secondPlayer = new MediaPlayer(TestActivity.this);
        secondPlayer.setOnPreparedListener(new IMediaPlayer.OnPreparedListener() {
            @Override
            public void onPrepared(IMediaPlayer iMediaPlayer) {
                secondPlayer.setDisplay(surfaceHolder);
                secondPlayer.start();
                secondPlayer.setPlayerMute(1);
            }
        });

        secondPlayer.setBufferTimeMax(3);
        secondPlayer.setTimeout(5, 30);

        try {
            secondPlayer.setDataSource("http://uv01.cnlive.com/record/live/82_20161126/hls/82_20161126-82_20161126.m3u8");
            secondPlayer.prepareAsync();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }


    @Override
    protected void onResume() {
        super.onResume();
        if (firstPlayer != null) {
            firstPlayer.start();
        }
        if (secondPlayer != null) {
            secondPlayer.start();
        }
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        if (firstPlayer != null) {
            if (firstPlayer.isPlaying()) {
                firstPlayer.stop();
            }
            firstPlayer.release();
        }
        if (secondPlayer != null) {
            if (secondPlayer.isPlaying()) {
                secondPlayer.stop();
            }
            secondPlayer.release();
        }

    }
}