기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
예:를 사용하여 Kinesis Video Streams로 데이터 전송 PutMedia API
이 예제에서는 PutMedia를 사용하는 방법을 보여줍니다API. 컨테이너 형식()에 이미 있는 데이터를 보내는 방법을 보여줍니다MKV. 전송하기 전에 데이터를 컨테이너 형식으로 조합해야 하는 경우(예: 카메라 비디오 데이터를 프레임으로 조합하는 경우) 섹션을 참조하세요Kinesis Video Streams에 업로드.
참고
PutMedia
작업은 C++ 및 Java 에서만 사용할 수 있습니다SDKs. 이는 연결, 데이터 흐름 및 승인의 전이중 관리 때문입니다. 다른 언어에서는 지원되지 않습니다.
이 예제에는 다음 단계가 포함됩니다.
코드 다운로드 및 구성
단계에 따라 Java 예제 코드를 다운로드하고, 프로젝트를 Java 로 가져오고IDE, 라이브러리 위치를 구성하고, 자격 증명을 사용하도록 AWS 코드를 구성합니다.
-
디렉터리를 생성하고 리포지토리에서 예제 소스 코드를 복제합니다 GitHub.
PutMedia
예제는 Java의 일부입니다.git clone https://github.com/awslabs/amazon-kinesis-video-streams-producer-sdk-java
-
사용 IDE 중인 Java(예: Eclipse
또는 IntelliJ IDEA )를 열고 다운로드한 Apache Maven 프로젝트를 가져옵니다. -
Eclipse에서 파일, 가져오기, Maven, Existing Maven Projects(기존 Maven 프로젝트)를 차례로 선택한 후 다운로드한 패키지의 루트로 이동합니다.
pom.xml
파일을 선택합니다. -
IntelliJ Idea에서 [Import]를 선택합니다. 다운로드한 패키지의 루트에 있는
pom.xml
파일을 찾습니다.
자세한 내용은 관련 IDE 설명서를 참조하세요.
-
-
가 가져온 라이브러리를 찾을 IDE 수 있도록 프로젝트를 업데이트합니다.
-
IntelliJ의 경우 다음을 IDEA수행합니다.
-
프로젝트의 [lib] 디렉터리의 컨텍스트 메뉴를 열고(오른쪽 버튼 클릭) [Add as library]를 선택합니다.
-
파일을 선택한 다음 프로젝트 구조를 선택합니다.
-
[Project Settings]에서 [Modules]를 선택합니다.
-
소스 탭에서 Language Level(언어 레벨)을
7
이상으로 설정합니다.
-
-
Eclipse의 경우 다음을 수행합니다.
-
프로젝트의 컨텍스트 메뉴를 열고(오른쪽 버튼 클릭) [Properties], [Java Build Path], [Source]를 차례로 선택합니다. 뒤이어 다음과 같이 하세요.
-
[Source] 탭에서 [Native library location]을 두 번 클릭합니다.
-
[Native Library Folder Configuration] 마법사에서, [Workspace]를 선택합니다.
-
[Native Library Folder] 선택에서 프로젝트에 있는 [lib] 디렉터리를 선택합니다.
-
-
프로젝트에 대한 컨텍스트 메뉴를 열고(마우스 오른쪽 버튼 클릭) [Properties]를 선택합니다. 뒤이어 다음과 같이 하세요.
-
[Libraries] 탭에서 [Add Jars]를 선택합니다.
-
JAR 선택 마법사에서 프로젝트
lib
디렉터리의 모든 .jars를 선택합니다.
-
-
-
코드 작성 및 검사
PutMedia
API 예제(PutMediaDemo
)는 다음 코딩 패턴을 보여줍니다.
이 단원의 코드 예제는 PutMediaDemo
클래스가 출처입니다.
생성 PutMediaClient
PutMediaClient
객체를 생성하려면 다음 파라미터가 필요합니다.
-
PutMedia
엔드포인트의 URI 입니다. -
스트리밍할 MKV 파일을
InputStream
가리키는 입니다. -
스트림 이름입니다. 이 예제에서는 Java 프로듀서 라이브러리 사용에서 생성된 스트림을 사용합니다(
my-stream
). 다른 스트림을 사용하려면 다음 파라미터를 변경합니다.private static final String STREAM_NAME="my-stream";
참고
이
PutMedia
API 예제에서는 스트림을 생성하지 않습니다. Java 프로듀서 라이브러리 사용, Kinesis Video Streams 콘솔 또는에 대한 테스트 애플리케이션을 사용하여 스트림을 생성해야 합니다 AWS CLI. -
현재 타임스탬프.
-
타임 코드 유형. 예제에서는
RELATIVE
를 사용하는데, 타임스탬프가 컨테이너 시작 기준이라는 것을 가리킵니다. -
수신된 패킷이 인가된 발신자에 의해 전송되었음을 확인하는
AWSKinesisVideoV4Signer
객체. -
최대 업스트림 대역폭(단위: Kbps)
-
패킷을 받았다는 인정을 수신하는
AckConsumer
객체.
다음 코드는 PutMediaClient
객체를 생성합니다.
/* actually URI to send PutMedia request */ final URI uri = URI.create(KINESIS_VIDEO_DATA_ENDPOINT + PUT_MEDIA_API); /* input stream for sample MKV file */ final InputStream inputStream = new FileInputStream(MKV_FILE_PATH); /* use a latch for main thread to wait for response to complete */ final CountDownLatch latch = new CountDownLatch(1); /* a consumer for PutMedia ACK events */ final AckConsumer ackConsumer = new AckConsumer(latch); /* client configuration used for AWS SigV4 signer */ final ClientConfiguration configuration = getClientConfiguration(uri); /* PutMedia client */ final PutMediaClient client = PutMediaClient.builder() .putMediaDestinationUri(uri) .mkvStream(inputStream) .streamName(STREAM_NAME) .timestamp(System.currentTimeMillis()) .fragmentTimeCodeType("RELATIVE") .signWith(getKinesisVideoSigner(configuration)) .upstreamKbps(MAX_BANDWIDTH_KBPS) .receiveAcks(ackConsumer) .build();
미디어 스트리밍 및 스레드 일시 중지
클라이언트가 생성된 후에는 샘플이 putMediaInBackground
로 비동기식 스트리밍을 시작합니다. 그러면 메인 스레드가 AckConsumer
가 반환될 때 까지, 즉 클라이언트가 닫히는 시점까지 latch.await
에 의해 일시 중지됩니다.
/* start streaming video in a background thread */ client.putMediaInBackground(); /* wait for request/response to complete */ latch.await(); /* close the client */ client.close();
코드 실행 및 확인
PutMedia
API 예제를 실행하려면 다음을 수행합니다.
-
Kinesis Video Streams 콘솔
my-stream
에서 또는를 사용하여 라는 스트림을 생성합니다 AWS CLI. -
작업 디렉터리를 Java 생산자 SDK 디렉터리로 변경합니다.
cd /<YOUR_FOLDER_PATH_WHERE_SDK_IS_DOWNLOADED>/amazon-kinesis-video-streams-producer-sdk-java/
-
Java SDK 및 데모 애플리케이션을 컴파일합니다.
mvn package
-
/tmp
디렉터리에 임시 파일 이름을 생성합니다.jar_files=$(mktemp)
-
로컬 리포지토리에서 파일로 종속성의 classpath 문자열을 생성합니다.
mvn -Dmdep.outputFile=$jar_files dependency:build-classpath
-
다음과 같이
LD_LIBRARY_PATH
환경 변수의 값을 설정합니다.export LD_LIBRARY_PATH=/<YOUR_FOLDER_PATH_WHERE_SDK_IS_DOWNLOADED>/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-native-build/downloads/local/lib:$LD_LIBRARY_PATH $ classpath_values=$(cat $jar_files)
-
다음과 같이 명령줄에서 데모를 실행하고 자격 증명을 제공합니다. AWS
java -classpath target/kinesisvideo-java-demo-1.0-SNAPSHOT.jar:$classpath_values -Daws.accessKeyId=${ACCESS_KEY} -Daws.secretKey=${SECRET_KEY} -Djava.library.path=/opt/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-native-build com.amazonaws.kinesisvideo.demoapp.DemoAppMain
-
Kinesis Video Streams 콘솔
을 열고 스트림 관리 페이지에서 스트림을 선택합니다. 비디오가 [Video Preview] 창에서 재생됩니다.