RICOH THETA V의 플러그인에 agora.io SDK 포함
14214 단어 아고라. 이오THETAPluginWebRTC
RICOH THETA V에서 화상 통화 플러그인을 만들어 보았습니다.
개요
RICOH THETA는 Android 기반 OS를 채용하고 있다는 것입니다.
agora.io에는 Android 용 VideoSDK가 있으므로 화상 통화 (THETA 측은 음성 수신 전용)를 구현해 보았습니다.
참고
구현에 대해서는 여기 를 참고에 했습니다.
구현 내용
MainActivity.java에 추가합니다.
우선은 THETA의 작법 부분을 추기합니다.
이 근처는 다른 쪽이 자세하게 설명되고 있으므로 상세한 내용은 할애합니다.
・카메라에 관한 설정
MainActivity.java sendBroadcast(new Intent("com.theta360.plugin.ACTION_MAIN_CAMERA_CLOSE"));
Camera myCamera = Camera.open();
Camera.Parameters parameters = myCamera.getParameters();
parameters.set("RIC_SHOOTING_MODE", "RicMoviePreview3840");
parameters.set("RIC_PROC_STITCHING", "RicStaticStitching");
parameters.set("recording-hint", "false");
myCamera.setParameters(parameters);
myCamera.startPreview();
・마이크에 관한 설정
MainActivity.java AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
audioManager.setParameters("RicUseBFormat=false");
다음으로 AgoraSDK에 관한 구현입니다.
MainActivity.java try {
mRtcEngine = RtcEngine.create(getBaseContext(), APPID, mRtcEventHandler);
}catch(Exception e){}
mRtcEngine.setChannelProfile(Constants.CHANNEL_PROFILE_LIVE_BROADCASTING);
mRtcEngine.setClientRole(Constants.CLIENT_ROLE_BROADCASTER);
mRtcEngine.enableWebSdkInteroperability(true);
mRtcEngine.setParameters(" {\"che.video.captureFormatNV21\":true}");
mRtcEngine.enableVideo();
mRtcEngine.setVideoProfile(1280,640,5,5000);
FrameLayout container = (FrameLayout) findViewById(R.id.local_video_view);
SurfaceView surfaceView = RtcEngine.CreateRendererView(getBaseContext());
surfaceView.setZOrderMediaOverlay(true);
container.addView(surfaceView);
mRtcEngine.setupLocalVideo(new VideoCanvas(surfaceView, VideoCanvas.RENDER_MODE_FIT, 0));
mRtcEngine.startPreview();
AgoraSDK의 이벤트 핸들러의 구현입니다.
다거점이 입실했을 때의 처리가 됩니다.
MainActivity.javaprivate final IRtcEngineEventHandler mRtcEventHandler = new IRtcEngineEventHandler() {
@Override
public void onFirstRemoteVideoDecoded(final int uid, int width, int height, int elapsed) {
runOnUiThread(new Runnable() {
@Override
public void run() {
setupRemoteVideo(uid);
}
});
}
@Override
public void onJoinChannelSuccess(String channel, int uid, int elapsed ){
joinStatus = 2;
}
@Override
public void onLeaveChannel(RtcStats stats){
joinStatus = 1;
}
@Override
public void onWarning(int warn){
//多拠点が入室時にTHETAのマイク入力が0になってしまう為、再入室処理
if(warn == 1031 || warn == 1019){
mRtcEngine.leaveChannel();
mRtcEngine.joinChannel(null, "room1", "Extra Optional Data", 100);
}
}
};
onWaring 이벤트 발생 시 THETA용 처리가 들어 있습니다.
현재도 원인은 불명합니다만, 다거점이 입실해 왔을 때에, THETA의 마이크 입력이 0이 되어 버립니다.
그 때문에, 한 번만 퇴실, 입실의 처리를 넣고 있습니다.
agora.io SDK와의 궁합으로 뭔가 문제가 일어나고 있습니다.
마지막으로 THETA가 AgoraIO의 채널에 접속하는 처리입니다.
카메라 버튼을 눌렀을 때 채널에 연결하도록 하고 있습니다.
MainActivity.java@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setAutoClose(true);
setKeyCallback(new KeyCallback() {
@Override
public void onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyReceiver.KEYCODE_CAMERA) {
if(joinStatus == 1) {
mRtcEngine.joinChannel(null, "room1", "Extra Optional Data", 100);
}else if(joinStatus == 2){
mRtcEngine.leaveChannel();
}
}
}
});
}
결과
브라우저를 다거점으로 입실하고 있습니다. 2:1의 영상을 수신할 수 있습니다.
또한 브라우저와 THETA 간의 음성 통화도 가능합니다.
마지막으로
agora.io에 관한 문의는 이쪽으로부터
Reference
이 문제에 관하여(RICOH THETA V의 플러그인에 agora.io SDK 포함), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/v-cube/items/5be9fdcc98eb7c3d7a41
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
RICOH THETA는 Android 기반 OS를 채용하고 있다는 것입니다.
agora.io에는 Android 용 VideoSDK가 있으므로 화상 통화 (THETA 측은 음성 수신 전용)를 구현해 보았습니다.
참고
구현에 대해서는 여기 를 참고에 했습니다.
구현 내용
MainActivity.java에 추가합니다.
우선은 THETA의 작법 부분을 추기합니다.
이 근처는 다른 쪽이 자세하게 설명되고 있으므로 상세한 내용은 할애합니다.
・카메라에 관한 설정
MainActivity.java sendBroadcast(new Intent("com.theta360.plugin.ACTION_MAIN_CAMERA_CLOSE"));
Camera myCamera = Camera.open();
Camera.Parameters parameters = myCamera.getParameters();
parameters.set("RIC_SHOOTING_MODE", "RicMoviePreview3840");
parameters.set("RIC_PROC_STITCHING", "RicStaticStitching");
parameters.set("recording-hint", "false");
myCamera.setParameters(parameters);
myCamera.startPreview();
・마이크에 관한 설정
MainActivity.java AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
audioManager.setParameters("RicUseBFormat=false");
다음으로 AgoraSDK에 관한 구현입니다.
MainActivity.java try {
mRtcEngine = RtcEngine.create(getBaseContext(), APPID, mRtcEventHandler);
}catch(Exception e){}
mRtcEngine.setChannelProfile(Constants.CHANNEL_PROFILE_LIVE_BROADCASTING);
mRtcEngine.setClientRole(Constants.CLIENT_ROLE_BROADCASTER);
mRtcEngine.enableWebSdkInteroperability(true);
mRtcEngine.setParameters(" {\"che.video.captureFormatNV21\":true}");
mRtcEngine.enableVideo();
mRtcEngine.setVideoProfile(1280,640,5,5000);
FrameLayout container = (FrameLayout) findViewById(R.id.local_video_view);
SurfaceView surfaceView = RtcEngine.CreateRendererView(getBaseContext());
surfaceView.setZOrderMediaOverlay(true);
container.addView(surfaceView);
mRtcEngine.setupLocalVideo(new VideoCanvas(surfaceView, VideoCanvas.RENDER_MODE_FIT, 0));
mRtcEngine.startPreview();
AgoraSDK의 이벤트 핸들러의 구현입니다.
다거점이 입실했을 때의 처리가 됩니다.
MainActivity.javaprivate final IRtcEngineEventHandler mRtcEventHandler = new IRtcEngineEventHandler() {
@Override
public void onFirstRemoteVideoDecoded(final int uid, int width, int height, int elapsed) {
runOnUiThread(new Runnable() {
@Override
public void run() {
setupRemoteVideo(uid);
}
});
}
@Override
public void onJoinChannelSuccess(String channel, int uid, int elapsed ){
joinStatus = 2;
}
@Override
public void onLeaveChannel(RtcStats stats){
joinStatus = 1;
}
@Override
public void onWarning(int warn){
//多拠点が入室時にTHETAのマイク入力が0になってしまう為、再入室処理
if(warn == 1031 || warn == 1019){
mRtcEngine.leaveChannel();
mRtcEngine.joinChannel(null, "room1", "Extra Optional Data", 100);
}
}
};
onWaring 이벤트 발생 시 THETA용 처리가 들어 있습니다.
현재도 원인은 불명합니다만, 다거점이 입실해 왔을 때에, THETA의 마이크 입력이 0이 되어 버립니다.
그 때문에, 한 번만 퇴실, 입실의 처리를 넣고 있습니다.
agora.io SDK와의 궁합으로 뭔가 문제가 일어나고 있습니다.
마지막으로 THETA가 AgoraIO의 채널에 접속하는 처리입니다.
카메라 버튼을 눌렀을 때 채널에 연결하도록 하고 있습니다.
MainActivity.java@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setAutoClose(true);
setKeyCallback(new KeyCallback() {
@Override
public void onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyReceiver.KEYCODE_CAMERA) {
if(joinStatus == 1) {
mRtcEngine.joinChannel(null, "room1", "Extra Optional Data", 100);
}else if(joinStatus == 2){
mRtcEngine.leaveChannel();
}
}
}
});
}
결과
브라우저를 다거점으로 입실하고 있습니다. 2:1의 영상을 수신할 수 있습니다.
또한 브라우저와 THETA 간의 음성 통화도 가능합니다.
마지막으로
agora.io에 관한 문의는 이쪽으로부터
Reference
이 문제에 관하여(RICOH THETA V의 플러그인에 agora.io SDK 포함), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/v-cube/items/5be9fdcc98eb7c3d7a41
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
MainActivity.java에 추가합니다.
우선은 THETA의 작법 부분을 추기합니다.
이 근처는 다른 쪽이 자세하게 설명되고 있으므로 상세한 내용은 할애합니다.
・카메라에 관한 설정
MainActivity.java
sendBroadcast(new Intent("com.theta360.plugin.ACTION_MAIN_CAMERA_CLOSE"));
Camera myCamera = Camera.open();
Camera.Parameters parameters = myCamera.getParameters();
parameters.set("RIC_SHOOTING_MODE", "RicMoviePreview3840");
parameters.set("RIC_PROC_STITCHING", "RicStaticStitching");
parameters.set("recording-hint", "false");
myCamera.setParameters(parameters);
myCamera.startPreview();
・마이크에 관한 설정
MainActivity.java
AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
audioManager.setParameters("RicUseBFormat=false");
다음으로 AgoraSDK에 관한 구현입니다.
MainActivity.java
try {
mRtcEngine = RtcEngine.create(getBaseContext(), APPID, mRtcEventHandler);
}catch(Exception e){}
mRtcEngine.setChannelProfile(Constants.CHANNEL_PROFILE_LIVE_BROADCASTING);
mRtcEngine.setClientRole(Constants.CLIENT_ROLE_BROADCASTER);
mRtcEngine.enableWebSdkInteroperability(true);
mRtcEngine.setParameters(" {\"che.video.captureFormatNV21\":true}");
mRtcEngine.enableVideo();
mRtcEngine.setVideoProfile(1280,640,5,5000);
FrameLayout container = (FrameLayout) findViewById(R.id.local_video_view);
SurfaceView surfaceView = RtcEngine.CreateRendererView(getBaseContext());
surfaceView.setZOrderMediaOverlay(true);
container.addView(surfaceView);
mRtcEngine.setupLocalVideo(new VideoCanvas(surfaceView, VideoCanvas.RENDER_MODE_FIT, 0));
mRtcEngine.startPreview();
AgoraSDK의 이벤트 핸들러의 구현입니다.
다거점이 입실했을 때의 처리가 됩니다.
MainActivity.java
private final IRtcEngineEventHandler mRtcEventHandler = new IRtcEngineEventHandler() {
@Override
public void onFirstRemoteVideoDecoded(final int uid, int width, int height, int elapsed) {
runOnUiThread(new Runnable() {
@Override
public void run() {
setupRemoteVideo(uid);
}
});
}
@Override
public void onJoinChannelSuccess(String channel, int uid, int elapsed ){
joinStatus = 2;
}
@Override
public void onLeaveChannel(RtcStats stats){
joinStatus = 1;
}
@Override
public void onWarning(int warn){
//多拠点が入室時にTHETAのマイク入力が0になってしまう為、再入室処理
if(warn == 1031 || warn == 1019){
mRtcEngine.leaveChannel();
mRtcEngine.joinChannel(null, "room1", "Extra Optional Data", 100);
}
}
};
onWaring 이벤트 발생 시 THETA용 처리가 들어 있습니다.
현재도 원인은 불명합니다만, 다거점이 입실해 왔을 때에, THETA의 마이크 입력이 0이 되어 버립니다.
그 때문에, 한 번만 퇴실, 입실의 처리를 넣고 있습니다.
agora.io SDK와의 궁합으로 뭔가 문제가 일어나고 있습니다.
마지막으로 THETA가 AgoraIO의 채널에 접속하는 처리입니다.
카메라 버튼을 눌렀을 때 채널에 연결하도록 하고 있습니다.
MainActivity.java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setAutoClose(true);
setKeyCallback(new KeyCallback() {
@Override
public void onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyReceiver.KEYCODE_CAMERA) {
if(joinStatus == 1) {
mRtcEngine.joinChannel(null, "room1", "Extra Optional Data", 100);
}else if(joinStatus == 2){
mRtcEngine.leaveChannel();
}
}
}
});
}
결과
브라우저를 다거점으로 입실하고 있습니다. 2:1의 영상을 수신할 수 있습니다.
또한 브라우저와 THETA 간의 음성 통화도 가능합니다.
마지막으로
agora.io에 관한 문의는 이쪽으로부터
Reference
이 문제에 관하여(RICOH THETA V의 플러그인에 agora.io SDK 포함), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/v-cube/items/5be9fdcc98eb7c3d7a41
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
agora.io에 관한 문의는 이쪽으로부터
Reference
이 문제에 관하여(RICOH THETA V의 플러그인에 agora.io SDK 포함), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/v-cube/items/5be9fdcc98eb7c3d7a41텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)