Notice
Recent Posts
Recent Comments
Link
투케이2K
1030. (Android/Java) [기능 보완] Aws Kvs WebRTC 신호 채널 목록 확인 시 NextToken 사용해 전체 리스트 목록 조회 수행 본문
Android
1030. (Android/Java) [기능 보완] Aws Kvs WebRTC 신호 채널 목록 확인 시 NextToken 사용해 전체 리스트 목록 조회 수행
투케이2K 2025. 9. 20. 09:32728x90
[개발 환경 설정]
개발 툴 : AndroidStudio
개발 언어 : Java / Kotlin

[소스 코드]
// --------------------------------------------------------------------------------------
[개발 및 테스트 환경]
// --------------------------------------------------------------------------------------
- 언어 : Java / Kotlin
- 개발 툴 : AndroidStudio
- 기술 구분 : AWS / Aws Kinesis Video Streams / WebRTC
- 사전) AWS 의존성 부여 설정
// --------------------------------------------
// [Aws build.gradle 라이브러리 정의] : targetSdk 33 ~ 34
// --------------------------------------------
/**
* implementation 'com.amazonaws:aws-android-sdk-kms:2.57.0'
* implementation 'com.amazonaws:aws-android-sdk-s3:2.57.0'
* implementation 'com.amazonaws:aws-android-sdk-iot:2.57.0'
* implementation 'com.amazonaws:aws-android-sdk-mobile-client:2.57.0'
* implementation 'com.amazonaws:aws-android-sdk-kinesisvideo:2.57.0'
* */
- 사전) WebRTC 설명 :
>> WebRTC 란 웹, 애플리케이션, 디바이스 간 중간자 없이 오디오나 영상 미디어를 포착하고 실시간 스트림할 뿐 아니라, 임의의 데이터도 교환할 수 있도록 하는 기술입니다
>> WebRTC 는 간단한 API 를 통해 웹 브라우저, 모바일 애플리케이션 및 커넥티드 디바이스 간에 실시간 통신을 활성화할 수 있습니다
>> WebRTC 주요 용어 :
- SDP (Session Description Protocol) : 오디오/비디오 코덱, 해상도, 포트 등 스트리밍 정보를 담은 텍스트 포맷
- Offer / Answer : 통신 연결을 협상하기 위한 SDP 메시지 (초기 연결 설정)
- ICE (Interactive Connectivity Establishment) : NAT/P2P 환경에서도 연결 가능한 경로(IP, 포트 등)를 찾기 위한 기술
- Candidate : 가능한 연결 경로 (IP + Port 조합)
// --------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------
[소스 코드]
// --------------------------------------------------------------------------------------
new Thread(){
@Override
public void run(){
// ---------------------------------------------
// [AWS IAM 계정 Key 정보 변수 선언]
// ---------------------------------------------
String ACCESS_KEY = "AK..A6";
String SECRET_KEY = "mP..5J";
String REGION = "ap-northeast-2";
// ---------------------------------------------
// [AWS 자격 증명 설정]
// ---------------------------------------------
AWSCredentials credentials = new BasicAWSCredentials(ACCESS_KEY, SECRET_KEY);
// ---------------------------------------------
// [AWSKinesisVideoClient 생성]
// ---------------------------------------------
AWSKinesisVideo awsKinesisVideoClient = new AWSKinesisVideoClient(credentials);
//awsKinesisVideoClient.setRegion(Region.getRegion("ap-northeast-1"));
awsKinesisVideoClient.setRegion(Region.getRegion(REGION));
// ---------------------------------------------
// [ListSignalingChannelsRequest 객체 생성]
// ---------------------------------------------
ListSignalingChannelsRequest request = new ListSignalingChannelsRequest(); // NextToken 방식으로 전체 조회 요청
//ListSignalingChannelsRequest request = new ListSignalingChannelsRequest().withMaxResults(10000); // 최대 10,000까지 가능
// ---------------------------------------------
// [While 반복문과 nextToken 을 사용해 신호 채널 전체 목록 리스트 정보 확인]
// ---------------------------------------------
List<ChannelInfo> allChannels = new ArrayList<>();
String nextToken = null;
do {
if (nextToken != null) {
S_Log.w("KWON_TWOK", ">>>>>>>>>>>>>>>>>>>>>>> [nextToken not null] >>>>>>>>>>>>>>>>>>>>>>>");
request.setNextToken(nextToken); // TODO Set NextToken
}
else {
S_Log.e("KWON_TWOK", ">>>>>>>>>>>>>>>>>>>>>>> [nextToken is null] >>>>>>>>>>>>>>>>>>>>>>>");
}
ListSignalingChannelsResult result = awsKinesisVideoClient.listSignalingChannels(request);
List<ChannelInfo> list = result.getChannelInfoList(); // Get Channel List
if (list != null && list.size()>0){
for (int i=0; i<list.size(); i++){
// [채널 개별 정보 확인]
//String channelArn = list.get(i).getChannelARN();
String channelName = list.get(i).getChannelName();
//String channelStatus = list.get(i).getChannelStatus();
//Date channelCreateTime = list.get(i).getCreationTime();
//String channelVersion = list.get(i).getVersion();
//String channelType = list.get(i).getChannelType();
S_Log.w("KWON_TWOK", ">>>>>>>>>>>>>>>>>>>>>>> ["+String.valueOf(channelName)+"] >>>>>>>>>>>>>>>>>>>>>>>");
}
allChannels.addAll(result.getChannelInfoList()); // Add Array List
}
nextToken = result.getNextToken(); // TODO Get NextToken
} while (nextToken != null);
S_Log._W_("AWS KVS WebRTC 신호 채널 리스트 정보 확인", new String[]{
"List Size :: " + String.valueOf(allChannels.size())
});
}
}.start();
// --------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------
[참고 사이트]
// --------------------------------------------------------------------------------------
[자바스크립트 AWS WebRTC 실시간 동영상 재생 수행]
https://blog.naver.com/kkh0977/223170500993?trackingCode=blog_bloghome_searchlist
[Aws Kvs WebRTC 실시간 영상 재생 관련 구성 요소 및 용어 정리]
https://blog.naver.com/kkh0977/223858189791
[Aws KVS WebRTC 채널 생성 및 삭제에 관한 요금 정책 정리]
https://blog.naver.com/kkh0977/223995447546
[안드로이드 AWS KVS 신호 채널 리스트 조회 ListSignalingChannels API 호출 시 AWS4Signer 헤더 생성 방법]
https://blog.naver.com/kkh0977/223949022834?trackingCode=blog_bloghome_searchlist
// --------------------------------------------------------------------------------------
728x90
반응형
'Android' 카테고리의 다른 글
Comments
