diff --git a/app/src/main/java/com/xypower/mplive/MainActivity.java b/app/src/main/java/com/xypower/mplive/MainActivity.java index 01d9362..6a25cb2 100644 --- a/app/src/main/java/com/xypower/mplive/MainActivity.java +++ b/app/src/main/java/com/xypower/mplive/MainActivity.java @@ -53,7 +53,7 @@ public class MainActivity extends AppCompatActivity implements RtmpHandler.RtmpL private SharedPreferences sp; // private String rtmpUrl = "rtmp://192.168.50.250/live/0"; - private String rtmpUrl = "rtmp://61.169.135.146/live/abcd"; + private String rtmpUrl = "rtmp://61.169.135.146/live/0"; private String recPath = Environment.getExternalStorageDirectory().getPath() + "/test.mp4"; private SrsPublisher mPublisher; @@ -123,11 +123,11 @@ public class MainActivity extends AppCompatActivity implements RtmpHandler.RtmpL private void init() { // restore data. sp = getSharedPreferences("MpLive", MODE_PRIVATE); - rtmpUrl = sp.getString("rtmpUrl", rtmpUrl); +// rtmpUrl = sp.getString("rtmpUrl", rtmpUrl); // initialize url. final EditText efu = (EditText) findViewById(R.id.url); - efu.setText(rtmpUrl); + btnPublish = (Button) findViewById(R.id.publish); btnSwitchCamera = (Button) findViewById(R.id.swCam); @@ -141,9 +141,9 @@ public class MainActivity extends AppCompatActivity implements RtmpHandler.RtmpL if (!TextUtils.isEmpty(url)) { rtmpUrl = url; } - + efu.setText(rtmpUrl); mCameraView = (SrsCameraView) findViewById(R.id.glsurfaceview_camera); - int rotation = intent.getIntExtra("rotation", -1); + final int rotation = intent.getIntExtra("rotation", -1); if (rotation != -1) { //设置图像显示方向 mCameraView.setPreviewOrientation(rotation); @@ -164,7 +164,7 @@ public class MainActivity extends AppCompatActivity implements RtmpHandler.RtmpL mPublisher.setVideoHDMode(); - cameraId = intent.getIntExtra("cameraId", 0); + cameraId = intent.getIntExtra("cameraId", 1); // mPublisher.startCamera(); mCameraView.setCameraCallbacksHandler(new SrsCameraView.CameraCallbacksHandler() { @@ -174,15 +174,17 @@ public class MainActivity extends AppCompatActivity implements RtmpHandler.RtmpL } }); - int autoStart = intent.getIntExtra("autoStart", 0); + final int autoStart = intent.getIntExtra("autoStart", 1); if (autoStart != 0) { - mPublisher.switchCameraFace(cameraId); + mPublisher.switchCameraFace(cameraId,rotation); mHandler.postDelayed(new Runnable() { @Override public void run() { + rtmpUrl = "rtmp://61.169.135.146/live/0"; SharedPreferences.Editor editor = sp.edit(); editor.putString("rtmpUrl", rtmpUrl); editor.apply(); + efu.setText(rtmpUrl + " cameraid=" + cameraId + " auto=" + autoStart); mPublisher.startPublish(rtmpUrl); if (btnSwitchEncoder.getText().toString().contentEquals("soft encoder")) { Toast.makeText(getApplicationContext(), "Use hard encoder", Toast.LENGTH_SHORT).show(); @@ -195,7 +197,7 @@ public class MainActivity extends AppCompatActivity implements RtmpHandler.RtmpL } }, 500); } else { - mPublisher.switchCameraFace(cameraId); + mPublisher.switchCameraFace(cameraId,rotation); } int autoClose = intent.getIntExtra("autoClose", 0); @@ -224,7 +226,7 @@ public class MainActivity extends AppCompatActivity implements RtmpHandler.RtmpL efu.setText(rtmpUrl); mPublisher.startPublish(rtmpUrl); // mPublisher.startCamera(); - mPublisher.switchCameraFace(cameraId); + mPublisher.switchCameraFace(cameraId,rotation); if (btnSwitchEncoder.getText().toString().contentEquals("soft encoder")) { Toast.makeText(getApplicationContext(), "Use hard encoder", Toast.LENGTH_SHORT).show(); @@ -263,7 +265,7 @@ public class MainActivity extends AppCompatActivity implements RtmpHandler.RtmpL int size = cameraData.size(); if (size > 0) { int i = (++cameraId) % size; - mPublisher.switchCameraFace(i); + 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 2bff8ff..b84d07c 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 @@ -62,7 +62,6 @@ public class GPUImageFilter { private int[] mGLFboTexId; private IntBuffer mGLFboBuffer; private float[] TEX_COORD; - private int curCameraid; public GPUImageFilter() { this(MagicFilterType.NONE); @@ -85,7 +84,6 @@ public class GPUImageFilter { public void init(Context context) { mContext = context; -// curCameraid = cameraid; onInit(); onInitialized(); } @@ -137,7 +135,6 @@ public class GPUImageFilter { -1.0f, 1.0f, // Top left. 1.0f, 1.0f, // Top right. }; - setOrtation(curCameraid); mGLCubeBuffer = ByteBuffer.allocateDirect(VEX_CUBE.length * 4).order(ByteOrder.nativeOrder()).asFloatBuffer(); mGLCubeBuffer.put(VEX_CUBE).position(0); @@ -416,7 +413,7 @@ public class GPUImageFilter { } //设置纹理旋转角度 - public void setOrtation(int i) { + public void setOrtation(int i, int rotation) { //纹理坐标 TEX_COORD = new float[]{0.0f, 0.0f, // Bottom left. 1.0f, 0.0f, // Bottom right. @@ -449,14 +446,58 @@ public class GPUImageFilter { 0.0f, 0.0f, // Top left. 0.0f, 1.0f // Top right. }; - if (i == 0) { - TEX_COORD = TEX_COORD0; - } else if (i == 1) { - TEX_COORD = TEX_COORD_90; - } else if (i == 2) { - TEX_COORD = TEX_COORD_180; - } else if (i == 3) { - TEX_COORD = TEX_COORD_270; + if (rotation == -1) { + if (i == 0) { + TEX_COORD = TEX_COORD0; + } else if (i == 1) { + TEX_COORD = TEX_COORD_90; + } else if (i == 2) { + TEX_COORD = TEX_COORD_180; + } else if (i == 3) { + TEX_COORD = TEX_COORD_270; + } + } else { + if (rotation == 0) { + if (i == 0) { + TEX_COORD = TEX_COORD0; + } else if (i == 1) { + TEX_COORD = TEX_COORD_90; + } else if (i == 2) { + TEX_COORD = TEX_COORD_180; + } else if (i == 3) { + TEX_COORD = TEX_COORD_270; + } + } else if (rotation == 1) { + if (i == 0) { + TEX_COORD = TEX_COORD_90; + } else if (i == 1) { + TEX_COORD = TEX_COORD_180; + } else if (i == 2) { + TEX_COORD = TEX_COORD_270; + } else if (i == 3) { + TEX_COORD = TEX_COORD0; + } + } else if (i == 2) { + if (i == 0) { + TEX_COORD = TEX_COORD_180; + } else if (i == 1) { + TEX_COORD = TEX_COORD_270; + } else if (i == 2) { + TEX_COORD = TEX_COORD0; + } else if (i == 3) { + TEX_COORD = TEX_COORD_90; + } + } else if (i == 3) { + if (i == 0) { + TEX_COORD = TEX_COORD_270; + } else if (i == 1) { + TEX_COORD = TEX_COORD0; + } else if (i == 2) { + TEX_COORD = TEX_COORD_90; + } else if (i == 3) { + TEX_COORD = TEX_COORD_180; + } + } } diff --git a/library/src/main/java/net/ossrs/yasea/SrsCameraView.java b/library/src/main/java/net/ossrs/yasea/SrsCameraView.java index d18ea04..f5fc9ab 100644 --- a/library/src/main/java/net/ossrs/yasea/SrsCameraView.java +++ b/library/src/main/java/net/ossrs/yasea/SrsCameraView.java @@ -101,14 +101,13 @@ public class SrsCameraView extends GLSurfaceView implements GLSurfaceView.Render int cameraid = 0; GLES20.glDisable(GL10.GL_DITHER); GLES20.glClearColor(0, 0, 0, 0); - String id = curItem.getId(); - - try { - cameraid = Integer.parseInt(id); - } catch (Exception e) { - cameraid = 0; - } - magicFilter.setOrtation(cameraid); +// String id = curItem.getId(); +// try { +// cameraid = Integer.parseInt(id); +// } catch (Exception e) { +// cameraid = 0; +// } +// magicFilter.setOrtation(cameraid,rotation); magicFilter.init(getContext().getApplicationContext()); magicFilter.onInputSizeChanged(mPreviewWidth, mPreviewHeight); @@ -523,8 +522,8 @@ public class SrsCameraView extends GLSurfaceView implements GLSurfaceView.Render return closestRange; } - public void setOrtation(int cameraid) { - magicFilter.setOrtation(cameraid); + public void setOrtation(int cameraid,int rotation) { + magicFilter.setOrtation(cameraid,rotation); } public void stopTorch() { diff --git a/library/src/main/java/net/ossrs/yasea/SrsPublisher.java b/library/src/main/java/net/ossrs/yasea/SrsPublisher.java index e832a82..f6ca890 100644 --- a/library/src/main/java/net/ossrs/yasea/SrsPublisher.java +++ b/library/src/main/java/net/ossrs/yasea/SrsPublisher.java @@ -309,16 +309,17 @@ public class SrsPublisher { return mCameraView.setFilter(type); } - public void switchCameraFace(int id) { + public void switchCameraFace(int id, int rotation) { List cameraData = mCameraView.getCameraData(); CameraItemData item = cameraData.get(id); int cameraid = 0; try { - cameraid = Integer.parseInt( item.getId()); + cameraid = Integer.parseInt(item.getId()); } catch (Exception e) { cameraid = 0; } - mCameraView.setOrtation(cameraid); + + mCameraView.setOrtation(cameraid, rotation); if (mEncoder != null && mEncoder.isEnabled()) { mEncoder.pause();