

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

# Kinesis 비디오 스트림에서 미디어 재생
<a name="producersdk-cpp-rpi-playback"></a>

[Kinesis Video Streams 콘솔](https://console.aws.amazon.com//kinesisvideo/home/)을 열고 생성한 스트림의 스트림 **이름을** 선택합니다.

Raspberry Pi에서 전송된 비디오 스트림이 콘솔에 나타납니다.

**참고**  
콘솔에 비디오가 표시되기까지 몇 초 정도 걸릴 수 있습니다.

스트림이 재생되면 콘솔에서 다음 기능을 실험할 수 있습니다.
+ **Video preview**(비디오 미리 보기) 섹션에서 탐색 컨트롤을 사용하여 스트림을 되감거나 앞으로 빨리 재생합니다.
+ **스트림 정보** 섹션에서 스트림의 코덱, 해상도 및 비트레이트를 검토합니다. 해상도 및 비트 전송률 값은이 자습서의 대역폭 사용량을 최소화하기 위해 Raspberry Pi에서 의도적으로 낮게 설정됩니다.

  스트림에 대해 생성 중인 Amazon CloudWatch 지표를 보려면 ** CloudWatch에서 스트림 지표 보기를** 선택합니다.
+ **데이터 보존 기간**에서는 비디오 스트림이 1일 동안 보존된다고 표시되어 있습니다. 이 값을 편집해 **No data retention**(데이터 보존 안 함)으로 설정하거나 이 값을 1일\$1며칠로 설정할 수 있습니다.
+ **서버 측 암호화**에서 데이터가 AWS Key Management Service ()에서 유지 관리하는 키를 사용하여 저장 시 암호화됩니다AWS KMS.

## 재생 문제
<a name="rpi-troubleshoot-playback"></a>

다음은 자주 발생하는 재생 문제와 이를 해결하는 방법입니다.

### 미디어는 없지만 로그에 PERSISTED Acks가 있음
<a name="rpi-troubleshoot-no-media"></a>

로그에 PERSISTED Acks가 표시되면 Kinesis Video Streams가에서 업로드한 미디어를 성공적으로 수집하고 저장한 것입니다`kvssink`. Kinesis Video Streams에서 받은 승인은 다음과 같습니다. JSON에서 `"EventType"` 키의 값을 확인합니다.

```
{"EventType":"RECEIVED","FragmentTimecode":252200,"FragmentNumber":"12345678901234567890123456724587702494771079511"}
{"EventType":"BUFFERING","FragmentTimecode":252467,"FragmentNumber":"12345678901234567890123456781729223736853277017"}
{"EventType":"RECEIVED","FragmentTimecode":252467,"FragmentNumber":"12345678901234567890123456781729223736853277017"}
{"EventType":"BUFFERING","FragmentTimecode":253000,"FragmentNumber":"12345678901234567890123456738870744847093249408"}
{"EventType":"PERSISTED","FragmentTimecode":252200,"FragmentNumber":"12345678901234567890123456724587702494771079511"}
{"EventType":"PERSISTED","FragmentTimecode":252467,"FragmentNumber":"1234567890123456789012345671729223736853277017"}
```

**​해결 방법:**

Kinesis Video Streams 콘솔에서 1\$12분 정도 기다린 다음 이중 오른쪽 화살표를 사용합니다. 미디어가 표시되지 않으면 스트림이 올바른 리전으로 전송되고 있는지 확인하고 스트림 이름의 철자를 검토합니다. 로그에서이 정보를 찾을 수 있습니다.

kvssink가 사용할 리전을 결정하는 방법에 [에 리전 제공 `kvssink`](examples-gstreamer-plugin-parameters.md#kvssink-region) 대한 자세한 내용은 섹션을 참조하세요.

### 미디어를에 로드하는 데 시간이 오래 걸립니다. AWS Management Console
<a name="rpi-troubleshoot-load-time"></a>

**중요**  
콘솔 재생 환경은 HLS 및 DASH 재생 환경과 다릅니다. GitHub의 샘플 미디어 플레이어 [호스팅 웹 페이지를](https://aws-samples.github.io/amazon-kinesis-video-streams-media-viewer/) 사용하여 재생도 테스트합니다. 웹 페이지의 소스 코드는 [여기에서](https://github.com/aws-samples/amazon-kinesis-video-streams-media-viewer) 찾을 수 있습니다.

네트워크 대역폭이 좋지 않거나 디바이스가 제한되어 콘솔에서 미디어가 느리게 로드될 수 있지만 비디오 인코딩 및 조각화와 관련이 있을 수도 있습니다.

**비디오 인코딩 기본 사항:**
+ H.264 및 H.265 인코더는 효율적인 압축을 위해 키 프레임(I-프레임)과 예측 프레임(P-프레임)을 사용합니다.
+ 키 프레임에는 전체 이미지 데이터가 포함된 반면, P 프레임에는 이전 프레임의 변경 사항만 포함됩니다.
+ “키 프레임 간격”은 비디오 스트림에서 키 프레임이 발생하는 빈도를 결정합니다.

**스트리밍의 조각화:**
+ Kinesis Video Streams에서 새 조각은 각 키 프레임으로 시작됩니다. 자세한 내용은 [Kinesis Video Streams 데이터 모델](how-data.md) 단원을 참조하십시오.
+ 조각 길이(초)는 다음과 같이 추정할 수 있습니다. *키 프레임 간격* ÷ *프레임 속도*

  **예:**

  키 프레임 간격이 30이고 프레임 속도가 15fps인 스트림의 경우: 

  조각 길이 = 30 ÷ 15 = 2초

키 프레임 간격이 클수록 조각이 길수록 스트리밍 미디어의 지연 시간이 증가합니다.

**​해결 방법:**

로드 시간을 개선하려면 키 프레임 간격을 줄이는 것이 좋습니다. 이렇게 하면 조각이 짧아져 지연 시간이 줄어들지만 비디오 파일의 크기도 늘어납니다.

`x264enc` GStreamer 요소의 경우 `key-int-max` 속성을 통해 키 프레임 간격을 명시적으로 설정할 수 있습니다.

```
x264enc bframes=0 key-int-max=60
```

로그 출력을 검토할 때 업로드 클라이언트가 Kinesis Video Streams로부터 ACKs 수신하는 빈도를 기록해 둡니다. 키프레임이 더 많이 생성될수록 ACKs 더 많이 반환됩니다.

### 미디어가 왜곡되었거나 아티팩트가 있음
<a name="rpi-troubleshoot-distortion"></a>

이 문제를 해결하려면 모든 케이블이 단단히 연결되어 있어야 합니다. 카메라 모듈에 대한 `libcamera-hello` (또는 레거시 Pi 카메라의 `raspistill` 경우)의 출력을 검토합니다.

GStreamer 파이프라인에서를 `autovideosink` 또는 `matroskamux` 및 `kvssink`로 바꿉니다`filesink`. 예제:

```
... x264enc tune=zerolatency speed-preset=ultrafast bframes=0 key-int-max=60 byte-stream=true ! h264parse ! matroskamux ! filesink location=output.mkv 
```

의 출력 파일 `filesink` 또는를 사용할 때 열리는 미디어 플레이어를 검토하여 아티팩트도 있는지 `autovideosink` 확인합니다.

또한 다음 파이프라인의 출력도 검토합니다.

```
gst-launch-1.0 autovideosrc ! videoconvert ! autovideosink
```

[디워프](https://gstreamer.freedesktop.org/documentation/opencv/dewarp.html?gi-language=c)와 같은 요소를 파이프라인에 추가하면 어안 카메라 출력을 수정할 수 있습니다.

카메라에 대해 지원되는 출력 코덱을 검토하고 필요에 따라 요소를 조정합니다.

예를 들어 USB 카메라가 JPEG 출력만 지원하는 경우를 사용하여 미디어를 H.264로 인코딩하기 전에 `jpegparse` 및 `jpegdec` 요소를 사용하여 미디어를 변환해야 합니다`x264enc`. 유사한 파이프라인 및/또는 웹캠 설정을 가진 다른 사용자를 위해 GStreamer 포럼에서 지원을 검색합니다.