diff --git a/.idea/misc.xml b/.idea/misc.xml
index 8fda779..97a51b0 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -3,7 +3,7 @@
-
+
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index 99cd0c1..403af93 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -34,6 +34,7 @@ dependencies {
implementation 'androidx.appcompat:appcompat:1.0.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation project(path: ':gstreamer_player')
+ implementation 'androidx.gridlayout:gridlayout:1.0.0'
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0'
diff --git a/app/src/main/java/com/ray650128/gstreamer_demo_app/MainActivity.java b/app/src/main/java/com/ray650128/gstreamer_demo_app/MainActivity.java
index 2364de6..e7e4643 100644
--- a/app/src/main/java/com/ray650128/gstreamer_demo_app/MainActivity.java
+++ b/app/src/main/java/com/ray650128/gstreamer_demo_app/MainActivity.java
@@ -5,20 +5,38 @@ import android.util.Log;
import androidx.appcompat.app.AppCompatActivity;
+import com.hisharp.gstreamer_player.GStreamerSurfaceView;
import com.hisharp.gstreamer_player.GstCallback;
import com.hisharp.gstreamer_player.GstLibrary;
import com.hisharp.gstreamer_player.GstStatus;
import com.ray650128.gstreamer_demo_app.databinding.ActivityMainBinding;
+import java.util.ArrayList;
+
public class MainActivity extends AppCompatActivity implements GstCallback {
private String TAG = MainActivity.class.getSimpleName();
private ActivityMainBinding binding;
- private GstLibrary gstLibrary;
+ //private GstLibrary gstLibrary;
- private final String defaultMediaUri = "rtsp://admin:admin@192.168.0.77:554/media/video2";
+ //private final String defaultMediaUri = "rtsp://admin:admin@192.168.0.77:554/media/video2";
+
+ private final ArrayList gstLibraries = new ArrayList();
+ private final String[] defaultMediaUris = {
+ "rtsp://admin:admin@192.168.0.77:554/media/video2",
+ "rtsp://admin:123456@192.168.0.80:554/profile2",
+ "rtsp://admin:123456@192.168.0.83:554/profile2",
+ "rtsp://admin:123456@192.168.0.84:554/profile2",
+ "rtsp://admin:admin@192.168.0.86:554/v2",
+ "rtsp://admin:admin@192.168.0.89:554/v02",
+ "rtsp://admin:1q2w3e4r!@60.249.32.50:554/unicast/c7/s1/live",
+ "rtsp://admin:1q2w3e4r!@60.249.32.50:554/unicast/c8/s1/live",
+ "rtsp://admin:1q2w3e4r!@60.249.32.50:554/unicast/c9/s1/live"
+ };
+
+ private final ArrayList videoViews = new ArrayList();
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -26,30 +44,59 @@ public class MainActivity extends AppCompatActivity implements GstCallback {
binding = ActivityMainBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
- gstLibrary = new GstLibrary(this, defaultMediaUri);
+ videoViews.add(binding.surfaceVideo1);
+ videoViews.add(binding.surfaceVideo2);
+ videoViews.add(binding.surfaceVideo3);
+ videoViews.add(binding.surfaceVideo4);
+ videoViews.add(binding.surfaceVideo5);
+ videoViews.add(binding.surfaceVideo6);
+ videoViews.add(binding.surfaceVideo7);
+ videoViews.add(binding.surfaceVideo8);
+ videoViews.add(binding.surfaceVideo9);
- gstLibrary.setSurfaceView(binding.surfaceVideo);
+ for (int i = 0; i < 1; i++) {
+ gstLibraries.add(new GstLibrary(this, defaultMediaUris[i]));
+ gstLibraries.get(i).setSurfaceView(videoViews.get(i));
+ gstLibraries.get(i).setOnStatusChangeListener(this);
+ }
+
+ binding.buttonPlay.setOnClickListener(view -> gstLibraries.forEach(GstLibrary::play));
+
+ binding.buttonStop.setOnClickListener(view -> gstLibraries.forEach(GstLibrary::stop));
+
+ /*gstLibrary = new GstLibrary(this, defaultMediaUri);
+
+ gstLibrary.setSurfaceView(binding.surfaceVideo1);
gstLibrary.setOnStatusChangeListener(this);
binding.buttonPlay.setOnClickListener(view -> gstLibrary.play());
- binding.buttonStop.setOnClickListener(view -> gstLibrary.stop());
+ binding.buttonStop.setOnClickListener(view -> gstLibrary.stop());*/
}
@Override
protected void onPause() {
super.onPause();
- if (gstLibrary != null) {
+ /*if (gstLibrary != null) {
gstLibrary.stop();
+ }*/
+
+ if (!gstLibraries.isEmpty()) {
+ gstLibraries.forEach(GstLibrary::stop);
}
}
@Override
protected void onDestroy() {
super.onDestroy();
- if (gstLibrary != null) {
+
+ /*if (gstLibrary != null) {
gstLibrary.release();
+ }*/
+
+ if (!gstLibraries.isEmpty()) {
+ gstLibraries.forEach(GstLibrary::release);
}
}
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index 480d7a9..2043617 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -1,5 +1,6 @@
-
+ android:layout_gravity="center"
+ app:columnCount="3"
+ app:rowCount="3">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+