From e525f7d2c9513e31d20d3abe70a61c1d155ed426 Mon Sep 17 00:00:00 2001 From: liuguijing <123456> Date: Wed, 6 Nov 2024 17:36:57 +0800 Subject: [PATCH 1/2] =?UTF-8?q?Camera2=20=E4=BF=AE=E6=94=B9=E6=97=8B?= =?UTF-8?q?=E8=BD=AC=E8=A7=92=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/xypower/mplive/MainActivity.java | 15 ++-- .../base/gpuimage/GPUImageFilter.java | 78 +++++++++++++++---- 2 files changed, 73 insertions(+), 20 deletions(-) diff --git a/app/src/main/java/com/xypower/mplive/MainActivity.java b/app/src/main/java/com/xypower/mplive/MainActivity.java index 96e984b..1d8c40b 100644 --- a/app/src/main/java/com/xypower/mplive/MainActivity.java +++ b/app/src/main/java/com/xypower/mplive/MainActivity.java @@ -140,10 +140,11 @@ public class MainActivity extends AppCompatActivity implements RtmpHandler.RtmpL String url = intent.getStringExtra("url"); if (!TextUtils.isEmpty(url)) { rtmpUrl = url; +// rtmpUrl = "rtmp://61.169.135.146/live/0"; } efu.setText(rtmpUrl); mCameraView = (SrsCameraView) findViewById(R.id.glsurfaceview_camera); - final int rotation = intent.getIntExtra("rotation", -1); + final int rotation = intent.getIntExtra("rotation", 0); if (rotation != -1) { //设置图像显示方向 mCameraView.setPreviewOrientation(rotation); @@ -164,7 +165,7 @@ public class MainActivity extends AppCompatActivity implements RtmpHandler.RtmpL mPublisher.setVideoHDMode(); - cameraId = intent.getIntExtra("cameraId", 1); + cameraId = intent.getIntExtra("cameraId", 0); // mPublisher.startCamera(); mCameraView.setCameraCallbacksHandler(new SrsCameraView.CameraCallbacksHandler() { @@ -176,7 +177,7 @@ public class MainActivity extends AppCompatActivity implements RtmpHandler.RtmpL final int autoStart = intent.getIntExtra("autoStart", 1); if (autoStart != 0) { - mPublisher.switchCameraFace(cameraId,rotation); + mPublisher.switchCameraFace(cameraId, rotation); mHandler.postDelayed(new Runnable() { @Override public void run() { @@ -184,7 +185,7 @@ public class MainActivity extends AppCompatActivity implements RtmpHandler.RtmpL SharedPreferences.Editor editor = sp.edit(); editor.putString("rtmpUrl", rtmpUrl); editor.apply(); - efu.setText(rtmpUrl + " cameraid=" + cameraId + " auto=" + autoStart); + efu.setText(rtmpUrl + "rotation= " + rotation + " cameraid=" + cameraId + " auto=" + autoStart); mPublisher.startPublish(rtmpUrl); if (btnSwitchEncoder.getText().toString().contentEquals("soft encoder")) { Toast.makeText(getApplicationContext(), "Use hard encoder", Toast.LENGTH_SHORT).show(); @@ -197,7 +198,7 @@ public class MainActivity extends AppCompatActivity implements RtmpHandler.RtmpL } }, 500); } else { - mPublisher.switchCameraFace(cameraId,rotation); + mPublisher.switchCameraFace(cameraId, rotation); } int autoClose = intent.getIntExtra("autoClose", 0); @@ -226,7 +227,7 @@ public class MainActivity extends AppCompatActivity implements RtmpHandler.RtmpL efu.setText(rtmpUrl); mPublisher.startPublish(rtmpUrl); // mPublisher.startCamera(); - mPublisher.switchCameraFace(cameraId,rotation); + mPublisher.switchCameraFace(cameraId, rotation); if (btnSwitchEncoder.getText().toString().contentEquals("soft encoder")) { Toast.makeText(getApplicationContext(), "Use hard encoder", Toast.LENGTH_SHORT).show(); @@ -265,7 +266,7 @@ public class MainActivity extends AppCompatActivity implements RtmpHandler.RtmpL int size = cameraData.size(); if (size > 0) { int i = (++cameraId) % size; - mPublisher.switchCameraFace(cameraId,rotation); + mPublisher.switchCameraFace(cameraId, rotation); } } }); diff --git a/library/src/main/java/com/seu/magicfilter/base/gpuimage/GPUImageFilter.java b/library/src/main/java/com/seu/magicfilter/base/gpuimage/GPUImageFilter.java index 56c65d0..30d11b9 100644 --- a/library/src/main/java/com/seu/magicfilter/base/gpuimage/GPUImageFilter.java +++ b/library/src/main/java/com/seu/magicfilter/base/gpuimage/GPUImageFilter.java @@ -412,6 +412,60 @@ public class GPUImageFilter { } } +// //设置纹理旋转角度 +// public void setOrtation(int rotation) { +// +//// //纹理坐标 +//// TEX_COORD = new float[]{0.0f, 0.0f, // Bottom left. +//// 1.0f, 0.0f, // Bottom right. +//// 0.0f, 1.0f, // Top left. +//// 1.0f, 1.0f // Top right. +//// }; +// +// final float TEX_COORD0[] = { +////1号摄像头 正 +// 0.0f, 1.0f, // Bottom left. +// 0.0f, 0.0f, // Bottom right. +// 1.0f, 1.0f, // Top left. +// 1.0f, 0.0f // Top right. +// }; +// final float TEX_COORD_90[] = { +////二号摄像头正 +// 1.0f, 1.0f, // Bottom left. +// 0.0f, 1.0f, // Bottom right. +// 1.0f, 0.0f, // Top left. +// 0.0f, 0.0f // Top right. +// }; +// final float TEX_COORD_180[] = { +////三号摄像头正 +// 1.0f, 0.0f, // Bottom left. +// 1.0f, 1.0f, // Bottom right. +// 0.0f, 0.0f, // Top left. +// 0.0f, 1.0f // Top right. +// }; +// +// final float TEX_COORD_270[] = {0.0f, 0.0f, // Bottom left. +// 1.0f, 0.0f, // Bottom right. +// 0.0f, 1.0f, // Top left. +// 1.0f, 1.0f // Top right. +// }; +// //纹理坐标 +// TEX_COORD = TEX_COORD0; +// if (rotation == 0) { +// TEX_COORD = TEX_COORD0; +// } else if (rotation == 90) { +// TEX_COORD = TEX_COORD_270; +// } else if (rotation == 180) { +// TEX_COORD = TEX_COORD_180; +// } else if (rotation == 270) { +// TEX_COORD = TEX_COORD_90; +// } else { +// TEX_COORD = TEX_COORD0; +// } +// +// } + + //设置纹理旋转角度 public void setOrtation(int rotation) { @@ -423,42 +477,40 @@ public class GPUImageFilter { // }; final float TEX_COORD0[] = { -//1号摄像头 正 + 0.0f, 0.0f, // Bottom left. + 1.0f, 0.0f, // Bottom right. + 0.0f, 1.0f, // Top left. + 1.0f, 1.0f // Top right. + }; + final float TEX_COORD_90[] = { 0.0f, 1.0f, // Bottom left. 0.0f, 0.0f, // Bottom right. 1.0f, 1.0f, // Top left. 1.0f, 0.0f // Top right. }; - final float TEX_COORD_90[] = { -//二号摄像头正 + final float TEX_COORD_180[] = { 1.0f, 1.0f, // Bottom left. 0.0f, 1.0f, // Bottom right. 1.0f, 0.0f, // Top left. 0.0f, 0.0f // Top right. }; - final float TEX_COORD_180[] = { -//三号摄像头正 + + final float TEX_COORD_270[] = { 1.0f, 0.0f, // Bottom left. 1.0f, 1.0f, // Bottom right. 0.0f, 0.0f, // Top left. 0.0f, 1.0f // Top right. }; - - final float TEX_COORD_270[] = {0.0f, 0.0f, // Bottom left. - 1.0f, 0.0f, // Bottom right. - 0.0f, 1.0f, // Top left. - 1.0f, 1.0f // Top right. - }; //纹理坐标 TEX_COORD = TEX_COORD0; if (rotation == 0) { TEX_COORD = TEX_COORD0; } else if (rotation == 90) { - TEX_COORD = TEX_COORD_270; + TEX_COORD = TEX_COORD_90; } else if (rotation == 180) { TEX_COORD = TEX_COORD_180; } else if (rotation == 270) { - TEX_COORD = TEX_COORD_90; + TEX_COORD = TEX_COORD_270; } else { TEX_COORD = TEX_COORD0; } From 9b6d2acccaccf2273e5f4fbd0ff3144ed780ca96 Mon Sep 17 00:00:00 2001 From: liuguijing <123456> Date: Wed, 6 Nov 2024 17:42:48 +0800 Subject: [PATCH 2/2] =?UTF-8?q?Camera2=20=E4=BF=AE=E6=94=B9=E6=97=8B?= =?UTF-8?q?=E8=BD=AC=E8=A7=92=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/xypower/mplive/MainActivity.java | 43 ++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/xypower/mplive/MainActivity.java b/app/src/main/java/com/xypower/mplive/MainActivity.java index c87f567..9e2e57f 100644 --- a/app/src/main/java/com/xypower/mplive/MainActivity.java +++ b/app/src/main/java/com/xypower/mplive/MainActivity.java @@ -144,7 +144,6 @@ public class MainActivity extends AppCompatActivity implements RtmpHandler.RtmpL btnPause = (Button) findViewById(R.id.pause); btnPause.setEnabled(false); - Intent intent = getIntent(); String url = intent.getStringExtra("url"); if (!TextUtils.isEmpty(url)) { rtmpUrl = url; @@ -431,6 +430,48 @@ public class MainActivity extends AppCompatActivity implements RtmpHandler.RtmpL mPublisher.startCamera(); } + private void startRTMPServer() { + File streamingDir = new File(getDataDir(), "streaming"); + if (!streamingDir.exists()) { + streamingDir.mkdirs(); + } + File confFile = new File(streamingDir, "zlmediakit.ini"); + + InputStream inputStream = null; + FileOutputStream fos = null; + try { + inputStream = getAssets().open("config.ini"); + fos = new FileOutputStream(confFile); + int len=-1; + byte[] buffer = new byte[1024]; + while ((len=inputStream.read(buffer)) != -1) { + fos.write(buffer,0, len); + } + fos.flush(); + } catch (Exception e) { + e.printStackTrace(); + } finally { + closeFriendly(inputStream); + closeFriendly(fos); + } + + ZLMediaKit.startServer(streamingDir.getAbsolutePath()); + } + + private void stopRTMPServer() { + ZLMediaKit.stopServer(); + } + + public static void closeFriendly(AutoCloseable closeable) { + if (closeable != null) { + try { + closeable.close(); + } catch (Exception e) { + e.printStackTrace(); + } + } + } + private static String getRandomAlphaString(int length) { String base = "abcdefghijklmnopqrstuvwxyz"; Random random = new Random();