Camera2 修改旋转角度

master
liuguijing 7 months ago
parent d5fcee1731
commit 8e026beec7

@ -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);
}
}
});

@ -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;
}
}
}

@ -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() {

@ -309,16 +309,17 @@ public class SrsPublisher {
return mCameraView.setFilter(type);
}
public void switchCameraFace(int id) {
public void switchCameraFace(int id, int rotation) {
List<CameraItemData> 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();

Loading…
Cancel
Save