한국어

비디오 및 자막 · 자막 툴킷

자막 파일이 VLC에서는 재생되지만 HTML5 트랙 요소에서는 재생되지 않는 이유

· 작동 방식

자막 webvtt 브라우저 처리 중

두 개의 파서에 도달하는 하나의 자막 파일(관대한 파일은 모든 단서를 표시하고 엄격한 파일은 단서가 삭제된 간격을 표시함)
원본 ToolAcre 벡터 일러스트레이션

데스크톱 플레이어는 관대합니다. 브라우저의 트랙 요소는 그렇지 않습니다. 이 게시물에서는 HTML5 캡션 파서가 WebVTT 파일을 읽는 방법, 자동으로 삭제되는 오류 및 둘 다 허용하는 파일을 준비하는 방법을 설명합니다.

동일한 파일이 VLC에서 작동하지만 웹 페이지에는 아무것도 표시되지 않습니다. 두 개의 파서, 두 가지 허용 수준

데스크톱 플레이어에서 올바르게 재생되고 웹 페이지에 아무것도 표시되지 않는 캡션 파일은 둘 사이에서 변경되지 않았습니다. 변화된 것은 독자가 얼마나 많은 관용을 가져오는가입니다. 데스크톱 플레이어는 사용자가 드래그하는 모든 것을 표시하도록 제작되었으므로 추측하고 수정하고 건너뜁니다. HTML5 트랙 요소는 사양을 구현하며 추측을 허용하는 사양은 하나가 아닙니다.

차이점은 둘 중 하나의 버그가 아닙니다. 이는 서로 다른 의무를 지닌 두 가지 디자인이며, 실질적인 결과는 데스크톱 플레이어가 파일이 웹에서 작동하는지 여부를 테스트하기에 적합하지 않다는 것입니다.

트랙 요소가 캡션 파일을 로드하는 방법 — 요청, MIME 유형, 교차 출처 트랙에 대한 CORS 및 WEBVTT 헤더 확인

트랙 요소는 캡션 파일을 일반 리소스로 가져옵니다. 즉, 다른 요청과 동일한 규칙이 적용됩니다. WebVTT 미디어 유형으로 제공되어야 하며 일반 텍스트로 제공되는 파일은 내용에 관계없이 거부됩니다. 다른 출처에서 호스팅되는 트랙에는 비디오 요소에 cross-origin 헤더와 crossorigin 속성이 필요하며, 이것이 없으면 구문 분석이 발생하기 전에 가져오기가 실패합니다.

그런 다음 헤더 확인이 이루어집니다. WebVTT 파일은 WEBVTT 서명으로 시작해야 하며 선택적으로 바이트 순서 표시가 앞에 와야 하며, 이 서명이 없는 파일은 WebVTT 파일이 아닙니다. 이것이 SRT 파일 이름을 VTT 확장자로 바꾸면 아무 것도 표시되지 않는 가장 일반적인 이유입니다. 이름을 바꾸면 첫 번째 줄이 아니라 확장자가 변경됩니다.

큐별 구문 분석 — 잘못된 시간 코드나 예상치 못한 줄로 브라우저가 수행하는 작업 및 오류가 발생하지 않는 이유

해당 지점 이후의 구문 분석은 신호별로 이루어지며 실패 모드는 혼란을 야기합니다. 파서가 읽을 수 없는 블록은 폐기되고 파싱이 계속됩니다. 예외도 없고 콘솔 오류도 없으며 시각적 표시도 없습니다. 단서는 전혀 나타나지 않습니다. 900개 중 4개의 잘못된 타임코드가 있는 파일은 거의 완벽하게 재생되며 형식 오류라기보다 번역이 누락된 것처럼 보이는 4분간의 침묵이 포함됩니다.

이것이 증상이 일반적으로 간헐적으로 보고되는 이유입니다. 그것에 대해 간헐적인 것은 없습니다. 동일한 단서가 매번 실패하지만 주변 단서가 작동하기 때문에 파일이 광범위하게 작동하는 것처럼 보이고 오류는 구문 분석이 아닌 콘텐츠에 기인합니다.

데스크톱 플레이어의 관대함 — VLC 및 기타 업체가 기술적으로 유효하지 않은 파일을 허용하는 이유

데스크톱 플레이어는 의도적으로 반대 입장을 취합니다. 밀리초 구분 기호를 모두 허용하고, 누락된 인덱스 줄을 허용하고, 확장자가 아닌 내용에서 형식을 추론하고, 순서를 수정하고, 불만 없이 사용할 수 없는 항목을 건너뜁니다. 파일을 플레이어로 드래그하는 사용자는 영화에 유효성 검사 보고서가 아닌 자막이 있기를 원합니다.

툴킷 파서는 입력 시 동일한 관대함 전통을 따르며 선택적 시간, 구분 기호 및 블록이 불규칙한 파일을 허용합니다. 차이점은 나중에 수행하는 작업입니다. 허용된 모든 결함을 위치 문제로 기록하고, 허용한 불규칙성을 유지하기보다는 하나의 정식 형태를 다시 기록합니다.

작업된 예: 세 가지 일반적인 오류가 있는 파일 — 브라우저에서 테스트하고 어떤 신호가 사라지는지 확인

세 가지 오류가 있는 파일을 가져옵니다. WEBVTT 헤더가 부족하고, 한 큐에 75의 초 필드가 있고, 한 큐가 시작하기 전에 종료됩니다. 데스크톱 플레이어에서 파일이 재생되면 불가능한 초는 복구되거나 조용히 건너뛰고 반전된 큐가 깜박이거나 삭제됩니다. 시청자는 자막을 봅니다.

트랙 요소에서 누락된 헤더가 즉시 종료됩니다. 파일이 WebVTT로 승인되지 않았기 때문에 단 하나의 신호도 표시되지 않습니다. 헤더를 추가하면 그림이 변경됩니다. 대부분의 큐가 나타나고, 75초의 큐는 구문 분석 중에 삭제되고, 반전된 큐는 구문 분석되지만 표시할 지속 시간이 없기 때문에 표시되지 않습니다. 유효성 검사는 페이지를 로드하기 전에 이름을 지정하여 불가능한 타임코드와 시작하기 전에 끝나는 큐를 각각 숫자로 보고합니다.

여기서 다루지 않는 내용 — ::cue를 사용한 스타일링, 위치 지정 설정 및 라이브 캡션

이는 큐의 모양이 아닌 로드 여부를 다룹니다. 큐 의사 요소를 통한 스타일 지정, 타임코드 라인의 위치 지정 및 정렬 설정, 영역 정의 및 수직 텍스트는 모두 파일이 구문 분석된 후에만 중요한 별도의 문제입니다. 아무것도 표시하지 않는 파일은 스타일 문제가 아니며 스타일을 적용해도 문제가 해결되지 않습니다.

라이브 및 스트리밍 캡션도 이 범위 밖에 있습니다. 적응형 스트림과 함께 전달되는 분할된 캡션 트랙에는 자체 전달 모델이 있으며, 트랙 요소에 의해 로드된 정적 파일은 플레이어에 도달하는 방식이 아닙니다.

요점: 가장 엄격한 파서 준비 — 자막 툴킷의 변환 및 정리를 통해 트랙 요소가 허용하는 파일을 생성하는 방법

가장 관대한 파서보다는 가장 엄격한 파서를 준비하십시오. 청중이 사용하는 파서는 엄격한 파서이기 때문입니다. WebVTT로 올바르게 변환하여 서명란을 가정하지 않고 작성하고, 올바른 미디어 유형으로 제공하고, 파일이 다른 호스트에 있는 경우 교차 원본 헤더를 추가하세요.

변환을 실행하고 배송 전에 보고된 문제를 읽어보세요. 변환기는 형식에 필요한 구분 기호를 사용하여 표준 타임스탬프를 기록하고, 연속적으로 큐의 번호를 다시 매기고, 허용해야 했던 오류를 보고합니다. 이는 브라우저에서 자동으로 사라진 큐 목록입니다. 그런 다음 페이지를 다시 로드하고 캡션이 나타나는 것을 신뢰하기보다는 소스와 큐 수를 비교하십시오.