예: API를 사용하여 PutMedia Kinesis Video Streams에 데이터 전송 - Amazon Kinesis Video Streams

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

예: API를 사용하여 PutMedia Kinesis Video Streams에 데이터 전송

이 예제는 API를 사용하는 방법을 보여줍니다. PutMedia 이미 컨테이너 형식 (MKV) 으로 되어 있는 데이터를 보내는 방법을 보여줍니다. 전송하기 전에 데이터를 컨테이너 형식으로 조합해야 하는 경우 (예: 카메라 비디오 데이터를 프레임으로 조합하는 경우) 를 참조하십시오. Kinesis 비디오 스트림 프로듀서 라이브러리

참고

PutMedia 작업은 C++ 및 Java SDK에서만 사용할 수 있습니다. 이는 연결, 데이터 흐름 및 승인이 전이중 방식으로 관리되기 때문입니다. 다른 언어에서는 지원되지 않습니다.

1단계: 코드 다운로드 및 구성

단계에 따라 Java 예제 코드를 다운로드하고, 프로젝트를 Java IDE로 가져오고, 라이브러리 위치를 구성하고, AWS 자격 증명을 사용하도록 코드를 구성합니다.

  1. 디렉터리를 생성하고 GitHub 리포지토리에서 예제 소스 코드를 복제합니다. PutMedia 예제는 Java 생산자 라이브러리의 일부입니다.

    git clone https://github.com/awslabs/amazon-kinesis-video-streams-producer-sdk-java
  2. 사용 중인 자바 IDE (예: Eclipse 또는 IntelliJ IDEA) 를 열고 다운로드한 Apache Maven 프로젝트를 가져옵니다.

    • Eclipse에서 파일, 가져오기, Maven, Existing Maven Projects(기존 Maven 프로젝트)를 차례로 선택한 후 다운로드한 패키지의 루트로 이동합니다. pom.xml 파일을 선택합니다.

    • IntelliJ Idea에서 [Import]를 선택합니다. 다운로드한 패키지의 루트에 있는 pom.xml 파일을 찾습니다.

    자세한 내용은 관련 IDE 문서를 참조하십시오.

  3. 가져온 라이브러리를 IDE가 알 수 있도록 프로젝트를 업데이트합니다.

    • IntelliJ IDEA의 경우 다음을 수행합니다.

      1. 프로젝트의 [lib] 디렉터리의 컨텍스트 메뉴를 열고(오른쪽 버튼 클릭) [Add as library]를 선택합니다.

      2. 파일을 선택한 다음 프로젝트 구조를 선택합니다.

      3. [Project Settings]에서 [Modules]를 선택합니다.

      4. 소스 탭에서 Language Level(언어 레벨)7 이상으로 설정합니다.

    • Eclipse의 경우 다음을 수행합니다.

      1. 프로젝트의 컨텍스트 메뉴를 열고(오른쪽 버튼 클릭) [Properties], [Java Build Path], [Source]를 차례로 선택합니다. 뒤이어 다음과 같이 하십시오.

        1. [Source] 탭에서 [Native library location]을 두 번 클릭합니다.

        2. [Native Library Folder Configuration] 마법사에서, [Workspace]를 선택합니다.

        3. [Native Library Folder] 선택에서 프로젝트에 있는 [lib] 디렉터리를 선택합니다.

      2. 프로젝트에 대한 컨텍스트 메뉴를 열고(마우스 오른쪽 버튼 클릭) [Properties]를 선택합니다. 뒤이어 다음과 같이 하십시오.

        1. [Libraries] 탭에서 [Add Jars]를 선택합니다.

        2. JAR selection(JAR 선택) 마법사에서 프로젝트의 lib 디렉터리에 있는 모든 .jar을 선택합니다.

2단계: 코드 작성 및 검토

PutMedia API 예제()는 다음과 같은 코딩 패턴을 보입니다.PutMediaDemo

이 단원의 코드 예제는 PutMediaDemo 클래스가 출처입니다.

만들기 PutMediaClient

PutMediaClient객체를 만들려면 다음 매개변수가 필요합니다.

  • PutMedia 엔드포인트의 URI.

  • 스트리밍할 MKV 파일로 향하는 InputStream

  • 스트림 이름입니다. 이 예제에서는 Java 생산자 라이브러리 사용하기에서 생성된 스트림을 사용합니다(my-stream). 다른 스트림을 사용하려면 다음 파라미터를 변경합니다.

    private static final String STREAM_NAME="my-stream";
    참고

    PutMediaAPI 예제는 스트림을 생성하지 않습니다. 스트림을 생성하려면 테스트 애플리케이션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();

3단계: 코드 실행 및 확인

PutMedia API 예제를 실행하려면 다음을 수행합니다.

  1. Kinesis Video Streams my-stream 콘솔에서 또는 를 사용하여 AWS CLI이름이 지정된 스트림을 생성합니다.

  2. 작업 디렉터리를 Java 생산자 SDK 디렉터리로 변경합니다.

    cd /<YOUR_FOLDER_PATH_WHERE_SDK_IS_DOWNLOADED>/amazon-kinesis-video-streams-producer-sdk-java/
  3. Java SDK와 데모 애플리케이션을 컴파일합니다.

    mvn package
  4. /tmp 디렉터리에 임시 파일 이름을 생성합니다.

    jar_files=$(mktemp)
  5. 로컬 리포지토리에서 파일로 종속성의 classpath 문자열을 생성합니다.

    mvn -Dmdep.outputFile=$jar_files dependency:build-classpath
  6. 다음과 같이 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)
  7. 다음과 같이 명령줄에서 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
  8. Kinesis Video Streams 콘솔을 열고 스트림 관리 페이지에서 스트림을 선택합니다. 비디오가 [Video Preview] 창에서 재생됩니다.