

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

# 예: Kinesis Video Streams 조각 구문 분석 및 렌더링
<a name="examples-renderer"></a>

에는 Amazon Kinesis 비디오 스트림 조각의 구문 분석 및 렌더링`KinesisVideoRendererExample`을 보여주는 라는 데모 애플리케이션이 [파서 라이브러리를 사용하여 스트리밍](parser-library.md) 포함되어 있습니다. 이 예제에서는 [JCodec](http://jcodec.org/)을 사용하여 [예: Kinesis Video Streams 생산자 SDK GStreamer 플러그인 - kvssink](examples-gstreamer-plugin.md) 애플리케이션을 사용해 수집된 H.264 인코딩 프레임을 디코딩합니다. JCodec을 사용하여 프레임을 디코딩한 후에는 [JFrame](https://docs.oracle.com/javase/7/docs/api/javax/swing/JFrame.html)을 사용하여 표시된 이미지가 렌더링됩니다.

이 예에서는 다음 작업을 수행하는 방법을 보여줍니다.
+ `GetMedia` API를 사용하여 Kinesis 비디오 스트림에서 프레임을 검색하고 볼 스트림을 렌더링합니다.
+ Kinesis Video Streams 콘솔을 사용하는 대신 사용자 지정 애플리케이션에서 스트림의 비디오 콘텐츠를 봅니다.

또한이 예제의 클래스를 사용하여 표시 전에 디코딩이 필요하지 않은 JPEG 파일 스트림과 같이 H.264로 인코딩되지 않은 Kinesis 비디오 스트림 콘텐츠를 볼 수 있습니다.

다음 절차에서는 렌더러 데모 애플리케이션을 설정하고 사용하는 방법을 소개합니다.

## 사전 조건
<a name="examples-renderer-prerequisites"></a>

렌더러 예제 라이브러리를 검사하고 사용하려면 다음이 필요합니다.
+ Amazon Web Services(AWS) 계정. AWS 계정이 아직 없는 경우 [Kinesis Video Streams 시작하기](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/getting-started.html)를 참조하세요.
+ [Eclipse Java Neon](https://www.eclipse.org/downloads/packages/release/neon/3/eclipse-jee-neon-3) 또는 [JetBrains IntelliJ Idea](https://www.jetbrains.com/idea/download/) 같은 Java 통합 개발 환경(IDE).

## 렌더러 예제 실행
<a name="examples-renderer-procedure"></a>

1. 디렉터리를 생성한 다음 GitHub 리포지토리에서 예제 소스 코드를 복제합니다.

   ```
   git clone https://github.com/aws/amazon-kinesis-video-streams-parser-library
   ```

1. 사용 중인 Java IDE(예: [Eclipse](https://www.eclipse.org/) 또는 [IntelliJ IDEA](https://www.jetbrains.com/idea/))를 열고 다운로드한 Apache Maven 프로젝트를 가져옵니다.
   + **Eclipse:** [**File**], [**Import**], [**Maven**], [**Existing Maven Projects**]를 차례로 선택합니다. `kinesis-video-streams-parser-lib` 디렉터리로 이동합니다.
   + **IntelliJ Idea에서 ** [**Import**]를 선택합니다. 다운로드한 패키지의 루트에 있는 `pom.xml` 파일을 찾습니다.
**참고**  
IntelliJ가 종속성을 찾을 수 없는 경우 다음을 수행해야 할 수 있습니다.  
**빌드 정리:** **File(파일)**, **Settings(설정)**, **Build, Execution, Deployment(구축, 실행, 배포)**, **Compiler(컴파일러)**를 선택합니다. **재구축 시 출력 디렉터리 지우기**가 선택되어 있는지 확인한 다음 **빌드**, **빌드 프로젝트를** 선택합니다.
**프로젝트 다시 가져오기:** 프로젝트의 컨텍스트(오른쪽 클릭) 메뉴를 열고 **Maven**, **Reimport(다시 가져오기)**를 선택합니다.

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

1. Java IDE에서 `src/test/java/com.amazonaws.kinesisvideo.parser/examples/KinesisVideoRendererExampleTest`를 엽니다.

1. 파일에서 `@Ignore` 명령을 제거합니다.

1. 파라미터를 Kinesis 비디오 스트림`.stream`의 이름으로 업데이트합니다.

1. `KinesisVideoRendererExample` 테스트를 실행합니다.

## 작동 방식
<a name="examples-renderer-howitworks"></a>

**Topics**
+ [MKV 데이터 전송](#examples-renderer-howitworks-send)
+ [MKV 조각을 프레임으로 구문 분석](#examples-renderer-howitworks-parse)
+ [프레임 디코딩 및 표시](#examples-renderer-howitworks-display)

### MKV 데이터 전송
<a name="examples-renderer-howitworks-send"></a>

이 예제에서는를 사용하여 `rendering_example_video.mkv` 파일에서 샘플 MKV 데이터를 전송`PutMedia`하여 **render-example-stream**이라는 스트림으로 비디오 데이터를 전송합니다.

이 애플리케이션에서는 `PutMediaWorker`를 생성합니다.

```
PutMediaWorker putMediaWorker = PutMediaWorker.create(getRegion(),
    getCredentialsProvider(),
    getStreamName(),
    inputStream,
    streamOps.amazonKinesisVideo);
executorService.submit(putMediaWorker);
```

`PutMediaWorker` 클래스에 대한 자세한 내용은 [파서 라이브러리를 사용하여 스트리밍](parser-library.md) 설명서의 [PutMedia 호출](parser-library-write.md#parser-library-write-example-putmedia) 단원을 참조하십시오.

### MKV 조각을 프레임으로 구문 분석
<a name="examples-renderer-howitworks-parse"></a>

그런 다음 이 예에서는 `GetMediaWorker`를 사용하여 스트림에서 MKV 조각을 검색해 구문 분석합니다.

```
GetMediaWorker getMediaWorker = GetMediaWorker.create(getRegion(),
    getCredentialsProvider(),
    getStreamName(),
    new StartSelector().withStartSelectorType(StartSelectorType.EARLIEST),
    streamOps.amazonKinesisVideo,
    getMediaProcessingArgumentsLocal.getFrameVisitor());
executorService.submit(getMediaWorker);
```

`GetMediaWorker` 클래스에 대한 자세한 내용은 [파서 라이브러리를 사용하여 스트리밍](parser-library.md)설명서의 [GetMedia 호출](parser-library-write.md#parser-library-write-example-getmedia) 단원을 참조하십시오.

### 프레임 디코딩 및 표시
<a name="examples-renderer-howitworks-display"></a>

이 예에서는 [JFrame](https://docs.oracle.com/javase/7/docs/api/javax/swing/JFrame.html)을 사용하여 프레임을 디코딩하여 표시합니다.

다음 코드 예제는 `KinesisVideoFrameViewer` 클래스에서 가져온 것으로, `JFrame`을 확장합니다.

```
 public void setImage(BufferedImage bufferedImage) {
    image = bufferedImage;
    repaint();
}
```

이미지는 [java.awt.image.BufferedImage](https://docs.oracle.com/javase/7/docs/api/java/awt/image/BufferedImage.html)의 인스턴스로 표시됩니다. `BufferedImage` 작업 방법을 보여주는 예제는 [이미지 읽기/로드](https://docs.oracle.com/javase/tutorial/2d/images/loadimage.html)를 참조하십시오.