TestActivity.java
5.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
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) {
//点击按钮切换到第二个MediaPlayer
firstPlayer.setDisplay(null);
// secondPlayer.setDisplay(surfaceHolder);
secondPlayer.setPlayerMute(0);
firstPlayer.release();
firstPlayer = null;
isFirst = false;
} else {
//点击按钮切换到第一个MediaPlayer
secondPlayer.setDisplay(null);
// firstPlayer.setDisplay(surfaceHolder);
firstPlayer.setPlayerMute(0);
secondPlayer.release();
secondPlayer = null;
isFirst = true;
}
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();
}
}
}