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

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

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

이 예제에서는 PutMedia를 사용하는 방법을 보여줍니다API. 컨테이너 형식()에 이미 있는 데이터를 보내는 방법을 보여줍니다MKV. 전송하기 전에 데이터를 컨테이너 형식으로 조합해야 하는 경우(예: 카메라 비디오 데이터를 프레임으로 조합하는 경우) 섹션을 참조하세요Kinesis Video Streams에 업로드.

참고

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

코드 다운로드 및 구성

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

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

    git clone https://github.com/awslabs/amazon-kinesis-video-streams-producer-sdk-java
  2. 사용 IDE 중인 Java(예: 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 선택 마법사에서 프로젝트 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 예제를 실행하려면 다음을 수행합니다.

  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] 창에서 재생됩니다.