WebVTT 캡션 동기화

이 항목에서는 오디오 및 비디오를 자막과 동기화하도록 HLS 비디오에 대한 WebVTT 캡션을 구성하는 방법에 대해 설명합니다.

개요

WebVTT (웹 비디오 텍스트 트랙) 파일은 캡션, 자막, 설명 등을 비디오의 시간 세그먼트와 연결하는 데 사용되는 간단한 텍스트 파일입니다.

WEBVTT

  00:00:03.50 --> 00:00:05.000 align:middle line:84%
  In this video, you'll learn
  about how Video Cloud Studio is

WebVTT 파일 추가에 대한 자세한 내용은비디오에 캡션 추가문서를 참조하십시오.

메타 데이터 헤더 추가

HLS 사양의 일부로 오디오와 비디오 간의 타임스탬프를 자막과 동기화하려면 각 WebVTT 헤더에X-TIMESTAMP-MAP메타데이터 헤더를 추가해야 합니다.

이 헤더가 없거나MPEGTS값이 올바르지 않은 경우 자막이 동영상과 동기화되지 않을 수 있습니다. 이는X-TIMESTAMP-MAP헤더가 누락된 경우 클라이언트가 기본 타임스탬프 오프셋을 0으로 가정하기 때문입니다 . 예를 들어, 900000과 0 사이의 차이로 인해 캡션이 10초 정도 차이가 날수 있습니다.

X-TIMESTAMP-MAP형식:

X-TIMESTAMP-MAP=MPEGTS:<MPEG-2 time>,LOCAL:<cue time>

다음은 샘플 WebVTT 파일입니다.

WEBVTT
X-TIMESTAMP-MAP=MPEGTS:900000,LOCAL:00:00:00.000

1
00:00:03.500 --> 00:00:05.000 align:middle line:84%
In this video, you'll learn
about how Video Cloud Studio is

자세한 내용은 Apple HLS 프로토콜 문서의자막 세그먼트섹션을 참조하십시오.

오프셋 값 결정

브라이트코브의 동적 인제스트 또는 Zencoder를 사용하여 콘텐츠를 트랜스코딩하는 경우 오프셋 값을 사용하십시오MPEGTS:900000 .

Zencoder 이외의 인코딩 시스템을 사용하는 경우 필요한 값을 얻는 것이 가장 좋습니다. Apple은 인코딩 된 비디오와 일치하도록 오프셋을 설정할 것을 권장합니다.

MPEGTS값은 지정된LOCAL시점의 MPEG 프레임의 프레젠테이션 타임스탬프 (PTS) 값에 해당합니다. Brightcove의 레거시 인제스트 시스템을 사용하는 경우 값을 사용할 수MPEGTS:0있습니다.

계정에 Dynamic Delivery가 활성화되어 있고 당사를 통해 자막 (원격 자막이 아닌)을 호스팅하는 경우 모든 것이 자동으로 작동하도록 설정해 드립니다 (PTS는 0이어야 하며 반드시 맞는지 확인하겠습니다).

계정에 동적 전송이 활성화되어 있고원격캡션을 사용하는 경우 PTS 값을 0으로 설정해야 합니다.

예를 들어 오프셋 값을 얻으려면 다음을 수행 할 수 있습니다.

요청 1:

터미널에서 HLS 비디오를 가져 와서 로컬 파일에 저장합니다. 이 경우에는 이름을 지정합니다seg.ts .

curl -o seg.ts "http://brightcove.vo.llnwd.net/v1/unsecured/media/4360108595001/201507/1154/4360341622001/4360108595001_4360341622001_s-1.ts?pubId=4360108595001&videoId=4360283683001"

요청 2:

그런 다음ffprobe명령을 사용하여 오프셋 값을 가져옵니다. ffprobeFFmpeg 프레임워크의 일부인 멀티미디어 스트림 분석기입니다 . 이것을 다운로드하여 컴퓨터에 설치해야합니다.

ffprobe -show_frames seg.ts

응답:

응답은 다음과 비슷해야 합니다.

pkt_pts=900000
pkt_pts_time=10.000000
pkt_dts=900000
pkt_dts_time=10.000000

모범 사례

다음 지침은 캡션이있는 앱을 개발할 때 도움이 될 것입니다.

캡션 기간

캡션 길이는 비디오 길이를 초과하지 않는 것이 좋습니다. 이렇게하면 비디오 재생이 완료된 후 캡션이 표시되지 않거나 진행률 표시 줄에서 검색 할 수없는 영역이 표시되지 않습니다.