‘Rust로 자막 동기화하기’는 실제 파일의 내용을 잃지 않고 변환하고 싶은 Rust 학습자를 위한 실습 프로젝트입니다. 짧은 영상의 시작 타이틀이 바뀌어 모든 자막에 같은 시간 오프셋을 적용해야 합니다. 원본 자막, 영상, 이전 결과를 보존하면서 재생 가능한 WebVTT 트랙을 내보내는 도구를 만듭니다.
가이드 실습 2개에서 오버플로를 검사하는 시간 계산부터 전체 파일 검증과 보호된 출력 생성까지 배웁니다. 챌린지 1개에서는 같은 기법을 다른 영상과 반대 방향의 오프셋에 조합해 적용합니다. 각 실습은 독립적으로 준비된 프로젝트와 파일로 시작합니다.
학습 내용
과정을 마치면 다음을 수행할 수 있습니다.
- 검증된 타임스탬프 필드를 곱셈과 덧셈의 오버플로를 검사하며 정수 밀리초로 변환합니다.
- 각 자막의 시작과 끝에 같은 부호 있는 오프셋을 적용하면서 길이, 파일 순서, 완전한 Unicode 및 여러 줄 텍스트, 유효한 중첩, 같은 시작 시간을 보존합니다.
- 잘못되거나 지원하지 않는 입력, 이동 후 음수 시간, 정수 오버플로를 문맥이 포함된
Result오류로 처리합니다. - 새 출력을 만들기 전에 전체 자막 컬렉션을 검증하고 변환하며, 이미 존재하는 출력 경로를 거부하고 재시도할 때 이전 작업을 보존합니다.
- Preview에서 실제 내보낸 파일을 불러와 공개된 시각적 정렬 시점을 확인하고, 실제 자막 트랙으로 영상을 재생하며, 불러온 파일을 다운로드합니다.
추천 대상
익숙한 Rust 데이터 타입과 파일 작업을 조합하여 오류에서 복구할 수 있는 작은 변환 도구를 만들 준비가 된 학습자를 위한 과정입니다.
선수 지식: 기본 터미널 사용법과 Rust 구조체, enum, Vec, Result, 문자열, 파일 읽기와 쓰기, 기본 테스트, 반복문을 알아야 합니다. Build Your First Rust CLI는 권장하지만 필수는 아니며, clap 지식은 필요하지 않습니다.
학습 환경: LabEx는 Terminal과 Preview, 준비된 Rust 프로젝트, 장면 카드와 관찰 시점이 공개된 원본 합성 무음 단편 영상을 제공합니다. 파서, 포매터, 명령 인터페이스, 실제 파일을 읽는 플레이어는 제공됩니다. 인터페이스 레이블과 명령 출력은 영어로 유지됩니다.
자주 묻는 질문
완전한 자막 파서를 작성하거나 영상 내용을 받아쓰나요?
아니요. 명확히 정의된 일반 텍스트 WebVTT 하위 집합을 사용합니다. 시간 변환, 자막 하나와 전체 컬렉션의 시간 이동, 보호된 내보내기 경계를 구현합니다. WebVTT 전체 지원, 받아쓰기, 번역, 오디오·영상 인코딩은 과정 범위 밖입니다.
수정 후 다시 실행하면 이전 결과를 덮어쓸 수 있나요?
아니요. 이미 존재하는 출력 경로는 거부됩니다. 이전 결과를 고유한 새 백업 디렉터리에 보존한 뒤 지정된 파일 이름을 다시 만드는 방법을 배웁니다. 파일 뒤쪽의 잘못된 자막도 출력 생성 전에 거부하므로 일부만 내보낸 결과를 남기지 않습니다.
시간을 얼마나 잡아야 하나요?
저자는 읽기, 시각적 확인, 일반적인 오류 복구를 포함해 140분으로 예상합니다. 이 예상 시간은 초보자의 전체 학습 과정으로 검증되지 않았습니다.

