제품 가이드

MP4에 SRT 자막 추가하기: 영상에 입히기와 선택형 자막

섹션으로 이동

섹션으로 이동

요약하기

요약하기

공유하기

공유하기

공유하기

AI 더빙, 영상 번역, 음성 번역, 립싱크

무료로 사용해보기

MP4에 SRT 자막을 선택 가능한 자막 트랙으로 추가하거나, 텍스트를 영상에 직접 입혀 항상 표시할 수 있습니다.

어떤 방식이 적합한지는 영상을 재생할 곳에 따라 달라집니다. 선택형 트랙은 호환되는 플레이어에서 자막을 끌 수 있습니다. 영상에 입힌 자막은 화면에 계속 남습니다. 게시 플랫폼이 별도 자막 파일을 지원한다면 MP4와 SRT를 합치지 않고 따로 사용할 수도 있습니다.

이 가이드는 이미 준비된 영상과 자막 파일로 시작합니다. 음성을 텍스트로 변환하는 과정 대신, 두 파일을 배포용으로 구성하는 방법을 다룹니다.

자막을 전달할 방식 선택하기

방식

전달할 파일

시청자가 자막을 끌 수 있나요?

영상 화면을 다시 인코딩하나요?

별도 SRT

MP4와 SRT

플랫폼이나 플레이어가 자막을 지원하면 가능

원본 파일은 재인코딩하지 않음

내장 자막 트랙

텍스트 트랙을 포함한 MP4 하나

호환되는 플레이어에서 가능

아래 스트림 복사 방식에서는 재인코딩하지 않음

영상에 입힌 자막

화면에 텍스트가 포함된 MP4 하나

불가능

아래 방식에서는 재인코딩함

검토용 영상에서는 선택형 자막을 쓰면 시청자가 글자 없이 화면을 확인할 수 있습니다. 특정 문구를 항상 보여야 하는 영상에는 자막을 입혀 표시를 고정할 수 있습니다. 나중에 텍스트를 수정하려면 자막을 입힌 버전을 다시 내보내야 하므로, 자막 없는 원본과 SRT를 보관하세요.

내장 트랙도 재생 환경의 영향을 받습니다. MP4 하나를 전달한다고 모든 웹사이트나 앱에서 텍스트 트랙을 보여 주는 것은 아닙니다. 전달 전에 실제 재생할 환경에서 테스트하세요.

MP4와 UTF-8 SRT 준비하기

original.mp4와 captions.srt를 같은 작업 폴더에 넣으세요. 원본의 복사본을 사용하세요. 아래 명령은 새 출력 파일을 만들므로, 아직 사용하지 않은 출력 파일명을 지정하세요.

SRT의 자막 항목은 번호, 시작 및 종료 시각, 자막 텍스트로 구성됩니다. 항목 사이에는 빈 줄을 넣으세요.


파일을 UTF-8 텍스트로 저장하고 .srt 확장자를 사용하세요. 자막과 영상의 편집본이 같은지 확인하세요. 이전 편집본의 자막 파일은 문구가 맞아도 타이밍이 어긋날 수 있습니다.

아래 방법은 공식 다운로드 경로에서 받은 FFmpeg를 사용합니다. 자막을 영상에 입히려면 subtitles 필터와 libass를 지원하는 빌드가 필요합니다. FFmpeg를 설치했다고 이 선택적 필터까지 포함되는 것은 아닙니다.

영상을 재인코딩하지 않고 선택형 자막 트랙 추가하기

파일이 있는 폴더에서 터미널을 열고 실행하세요. 아래 예시는 macOS/Linux 셸 문법을 사용합니다. Windows 셸은 따옴표와 줄 연결 방식이 다릅니다.

ffmpeg -i original.mp4 -i captions.srt \
  -map 0:v:0 -map '0:a?' -map 1:0 \
  -c:v copy -c:a copy -c:s mov_text \
  -metadata:s:s:0 language

이 명령은 원본의 첫 번째 영상 스트림, 오디오 스트림이 있으면 해당 스트림들, SRT 입력을 선택합니다. 영상과 오디오는 복사하고 자막은 MP4 텍스트 트랙으로 인코딩합니다. 자막이 다른 언어라면 언어 메타데이터를 변경하세요. 이 언어 표시는 텍스트를 번역하지 않습니다.

예시는 원본 스트림을 MP4에서 사용할 수 있다고 가정합니다. FFmpeg가 호환되지 않는 오디오 코덱 오류를 보고하면, 오류 메시지만 지우고 같은 명령을 재시도하지 말고 적절한 오디오 변환 방식을 선택하세요. 이를 결정하는 동안 원본 파일을 보관하세요.

사용할 플레이어에서 selectable.mp4를 열고 자막 또는 언어 메뉴를 찾으세요. 영어 트랙을 켰다가 꺼 보세요. 자막 옵션이 없다면 내장 형식을 지원하는 플레이어에서 테스트하거나, 전달 대상이 지원하는 방식을 사용하세요.

자막 스트림이 있다는 사실만으로 재생 테스트를 마치지 마세요. 파일이 유효해도 플레이어가 자막을 노출하지 않을 수 있습니다.

SRT를 MP4 화면에 입히기

같은 작업 폴더에서 이 명령을 실행하세요.

ffmpeg -i original.mp4 -vf "subtitles=captions.srt" \
  -map 0:v:0 -map '0:a?' \
  -c:v libx264 -crf 18 -pix_fmt yuv420p \
  -c

자막 필터는 프레임에 텍스트를 그립니다. 영상은 H.264로 다시 인코딩됩니다. 여기의 CRF 설정은 재현 가능한 예시이며, 모든 영상에 권장하는 품질 설정은 아닙니다. 직접 만든 출력물의 글자 가독성, 화질, 파일 크기를 확인하세요.

테스트할 때는 예시에 나온 간단한 파일명을 사용하세요. 공백이나 특수문자가 있는 파일 경로는 FFmpeg 필터 안에서 따옴표 처리가 추가로 필요할 수 있습니다. 두 입력 파일을 같은 폴더에 두면 첫 테스트에서 이 변수를 없앨 수 있습니다.

명령이 No such filter: subtitles를 보고하면 설치된 빌드를 확인하세요. 필요한 자막 렌더링 의존성을 포함해 컴파일한 버전이 필요합니다. FFmpeg 자막 필터 문서에 요구 사항이 설명되어 있습니다. SRT 파일명을 바꿔도 없는 필터가 추가되지는 않습니다.

그래픽 인터페이스로 작업하려면 HandBrake의 SRT 가져오기와 자막 입히기 문서를 참고하세요. 이 가이드의 예제 파일은 FFmpeg로 만들었습니다. HandBrake UI를 단계별로 안내하는 예시는 아닙니다.

재현 가능한 테스트에서 확인한 결과

오디오가 없는 12초 길이의 1280 × 720 합성 테스트 영상과 네 개 항목의 영어 SRT를 만들었습니다. FFmpeg 9.0.1로 내장 자막 트랙 MP4와 자막을 입힌 MP4를 생성했습니다.

내장 자막 버전에는 H.264 영상과 mov_text 자막 스트림이 들어 있었습니다. 해당 스트림을 SRT로 다시 추출했을 때, 끝부분의 빈 줄 차이만 있었고 자막 문구와 타임스탬프는 보존되었습니다. 디코딩한 영상의 해시가 원본과 일치해, 이 테스트에서는 화면이 그대로 유지됐음을 확인했습니다.

자막을 입힌 출력물에는 디코딩한 프레임에서 자막 텍스트가 보이는 영상 스트림이 들어 있었습니다. 해당 문구를 표시하는 데 별도 자막 스트림은 필요하지 않았습니다.


테스트 영상에 영구적으로 입힌 첫 번째 자막

1초 시점의 합성 샘플입니다. 자막 텍스트는 디코딩한 영상 프레임의 일부입니다. 로컬 FFmpeg 예시이며, Perso에서 생성한 영상이 아닙니다.

같은 입력 파일로 테스트해 보세요. 원본 테스트 MP4와 네 개 항목의 SRT입니다. 내장 자막 트랙 결과와 자막을 입힌 결과를 비교하세요.

이 검사는 예제 파일을 어떻게 구성했는지 확인합니다. 모든 휴대전화, 소셜 플랫폼, 학습 관리 시스템과의 호환성을 입증하지는 않습니다. 무음 예제이므로 특정 오디오 코덱이 보존되는지도 검증하지 않습니다.

늦게 나오거나 사라지거나 글자가 깨지는 자막 수정하기

자막이 잘못된 시점에 나타날 때

영상에서 명확히 식별할 수 있는 장면과 첫 번째 자막을 대조하세요. 타이밍 예시에서 첫 자막의 시작 시각을 00:00:00,500에서 00:00:02,500으로 바꾸면 2초 늦게 나타납니다. 원래 타임스탬프로 복원하면 의도적으로 넣은 이 지연이 해결됩니다.

모든 자막이 같은 시간만큼 늦으면 자막 편집기에서 전체 트랙을 그만큼 이동하세요. 영상이 진행될수록 차이가 커진다면, 일정한 시간만큼 옮기기 전에 편집본 차이나 시간 변환 문제를 살펴보세요. 조정한 뒤에는 시작, 중간, 끝을 확인하세요.

업로드한 뒤 자막이 사라질 때

먼저 어떤 전달 방식을 사용했는지 확인하세요. 업로드한 플랫폼이 내장 텍스트 트랙을 노출하지 않을 수 있습니다. 별도 SRT는 플랫폼의 자막 업로드 절차를 거쳐야 합니다. 영상에 입힌 자막은 이미 화면에 포함되어 있으므로, 글자가 없다면 내보낸 파일 자체를 확인하세요.

이미 자막을 입힌 버전에 플랫폼의 자막 트랙을 추가하려면 먼저 시청 결과를 확인하세요. 두 자막 레이어가 겹쳐 보일 수 있습니다.

글자가 잘못 표시될 때

저장된 텍스트의 인코딩과 렌더링 폰트에 필요한 글자가 있는지 확인하세요. 인코딩 문제와 폰트의 글리프 누락은 해결 방법이 다릅니다. 전체 영상을 처리하기 전에 문제가 생긴 글자가 포함된 짧은 자막을 내보내 확인하세요.

파일을 합치기 전에 자막을 만들어야 하나요?

정확한 SRT가 이미 있으면 그대로 사용하세요. 자막을 만들거나 번역해야 한다면 Perso 자막 워크플로우 또는 다국어 자막 가이드에서 시작하세요.

자막과 함께 음성도 번역하려면 Perso Dubbing을 살펴보세요. 전달할 파일을 구성하기 전에 자막 텍스트를 최종 오디오와 편집본에 맞추세요.

자주 묻는 질문

영상 없이 SRT를 MP4로 변환할 수 있나요?
SRT에는 자막 텍스트와 타이밍이 들어 있습니다. 유용한 영상을 만들려면 화면 콘텐츠가 필요합니다. .srt 파일명을 .mp4로 바꿔도 영상 프레임은 생기지 않습니다. 이 가이드는 기존 MP4와 그 영상에 맞는 자막 파일을 결합합니다.

완성된 MP4에서 시청자가 자막을 없앨 수 있나요?
지원하는 플레이어에서는 내장 자막 트랙을 끌 수 있습니다. 영상에 입힌 글자는 화면의 일부이므로 자막 메뉴에서 끌 수 없습니다. 글자가 없는 버전이나 수정한 자막이 있는 버전을 내보낼 수 있도록 자막 없는 원본을 보관하세요.

SRT를 추가하면 화질이 떨어지나요?
내장 자막 트랙 명령은 영상을 재인코딩하지 않고 영상 스트림을 복사합니다. 자막을 입히는 명령은 텍스트를 포함하도록 영상을 다시 인코딩합니다. 시청자가 실제로 볼 크기에서 출력 영상과 자막을 확인하세요.

MP4에 SRT 자막을 선택 가능한 자막 트랙으로 추가하거나, 텍스트를 영상에 직접 입혀 항상 표시할 수 있습니다.

어떤 방식이 적합한지는 영상을 재생할 곳에 따라 달라집니다. 선택형 트랙은 호환되는 플레이어에서 자막을 끌 수 있습니다. 영상에 입힌 자막은 화면에 계속 남습니다. 게시 플랫폼이 별도 자막 파일을 지원한다면 MP4와 SRT를 합치지 않고 따로 사용할 수도 있습니다.

이 가이드는 이미 준비된 영상과 자막 파일로 시작합니다. 음성을 텍스트로 변환하는 과정 대신, 두 파일을 배포용으로 구성하는 방법을 다룹니다.

자막을 전달할 방식 선택하기

방식

전달할 파일

시청자가 자막을 끌 수 있나요?

영상 화면을 다시 인코딩하나요?

별도 SRT

MP4와 SRT

플랫폼이나 플레이어가 자막을 지원하면 가능

원본 파일은 재인코딩하지 않음

내장 자막 트랙

텍스트 트랙을 포함한 MP4 하나

호환되는 플레이어에서 가능

아래 스트림 복사 방식에서는 재인코딩하지 않음

영상에 입힌 자막

화면에 텍스트가 포함된 MP4 하나

불가능

아래 방식에서는 재인코딩함

검토용 영상에서는 선택형 자막을 쓰면 시청자가 글자 없이 화면을 확인할 수 있습니다. 특정 문구를 항상 보여야 하는 영상에는 자막을 입혀 표시를 고정할 수 있습니다. 나중에 텍스트를 수정하려면 자막을 입힌 버전을 다시 내보내야 하므로, 자막 없는 원본과 SRT를 보관하세요.

내장 트랙도 재생 환경의 영향을 받습니다. MP4 하나를 전달한다고 모든 웹사이트나 앱에서 텍스트 트랙을 보여 주는 것은 아닙니다. 전달 전에 실제 재생할 환경에서 테스트하세요.

MP4와 UTF-8 SRT 준비하기

original.mp4와 captions.srt를 같은 작업 폴더에 넣으세요. 원본의 복사본을 사용하세요. 아래 명령은 새 출력 파일을 만들므로, 아직 사용하지 않은 출력 파일명을 지정하세요.

SRT의 자막 항목은 번호, 시작 및 종료 시각, 자막 텍스트로 구성됩니다. 항목 사이에는 빈 줄을 넣으세요.


파일을 UTF-8 텍스트로 저장하고 .srt 확장자를 사용하세요. 자막과 영상의 편집본이 같은지 확인하세요. 이전 편집본의 자막 파일은 문구가 맞아도 타이밍이 어긋날 수 있습니다.

아래 방법은 공식 다운로드 경로에서 받은 FFmpeg를 사용합니다. 자막을 영상에 입히려면 subtitles 필터와 libass를 지원하는 빌드가 필요합니다. FFmpeg를 설치했다고 이 선택적 필터까지 포함되는 것은 아닙니다.

영상을 재인코딩하지 않고 선택형 자막 트랙 추가하기

파일이 있는 폴더에서 터미널을 열고 실행하세요. 아래 예시는 macOS/Linux 셸 문법을 사용합니다. Windows 셸은 따옴표와 줄 연결 방식이 다릅니다.

ffmpeg -i original.mp4 -i captions.srt \
  -map 0:v:0 -map '0:a?' -map 1:0 \
  -c:v copy -c:a copy -c:s mov_text \
  -metadata:s:s:0 language

이 명령은 원본의 첫 번째 영상 스트림, 오디오 스트림이 있으면 해당 스트림들, SRT 입력을 선택합니다. 영상과 오디오는 복사하고 자막은 MP4 텍스트 트랙으로 인코딩합니다. 자막이 다른 언어라면 언어 메타데이터를 변경하세요. 이 언어 표시는 텍스트를 번역하지 않습니다.

예시는 원본 스트림을 MP4에서 사용할 수 있다고 가정합니다. FFmpeg가 호환되지 않는 오디오 코덱 오류를 보고하면, 오류 메시지만 지우고 같은 명령을 재시도하지 말고 적절한 오디오 변환 방식을 선택하세요. 이를 결정하는 동안 원본 파일을 보관하세요.

사용할 플레이어에서 selectable.mp4를 열고 자막 또는 언어 메뉴를 찾으세요. 영어 트랙을 켰다가 꺼 보세요. 자막 옵션이 없다면 내장 형식을 지원하는 플레이어에서 테스트하거나, 전달 대상이 지원하는 방식을 사용하세요.

자막 스트림이 있다는 사실만으로 재생 테스트를 마치지 마세요. 파일이 유효해도 플레이어가 자막을 노출하지 않을 수 있습니다.

SRT를 MP4 화면에 입히기

같은 작업 폴더에서 이 명령을 실행하세요.

ffmpeg -i original.mp4 -vf "subtitles=captions.srt" \
  -map 0:v:0 -map '0:a?' \
  -c:v libx264 -crf 18 -pix_fmt yuv420p \
  -c

자막 필터는 프레임에 텍스트를 그립니다. 영상은 H.264로 다시 인코딩됩니다. 여기의 CRF 설정은 재현 가능한 예시이며, 모든 영상에 권장하는 품질 설정은 아닙니다. 직접 만든 출력물의 글자 가독성, 화질, 파일 크기를 확인하세요.

테스트할 때는 예시에 나온 간단한 파일명을 사용하세요. 공백이나 특수문자가 있는 파일 경로는 FFmpeg 필터 안에서 따옴표 처리가 추가로 필요할 수 있습니다. 두 입력 파일을 같은 폴더에 두면 첫 테스트에서 이 변수를 없앨 수 있습니다.

명령이 No such filter: subtitles를 보고하면 설치된 빌드를 확인하세요. 필요한 자막 렌더링 의존성을 포함해 컴파일한 버전이 필요합니다. FFmpeg 자막 필터 문서에 요구 사항이 설명되어 있습니다. SRT 파일명을 바꿔도 없는 필터가 추가되지는 않습니다.

그래픽 인터페이스로 작업하려면 HandBrake의 SRT 가져오기와 자막 입히기 문서를 참고하세요. 이 가이드의 예제 파일은 FFmpeg로 만들었습니다. HandBrake UI를 단계별로 안내하는 예시는 아닙니다.

재현 가능한 테스트에서 확인한 결과

오디오가 없는 12초 길이의 1280 × 720 합성 테스트 영상과 네 개 항목의 영어 SRT를 만들었습니다. FFmpeg 9.0.1로 내장 자막 트랙 MP4와 자막을 입힌 MP4를 생성했습니다.

내장 자막 버전에는 H.264 영상과 mov_text 자막 스트림이 들어 있었습니다. 해당 스트림을 SRT로 다시 추출했을 때, 끝부분의 빈 줄 차이만 있었고 자막 문구와 타임스탬프는 보존되었습니다. 디코딩한 영상의 해시가 원본과 일치해, 이 테스트에서는 화면이 그대로 유지됐음을 확인했습니다.

자막을 입힌 출력물에는 디코딩한 프레임에서 자막 텍스트가 보이는 영상 스트림이 들어 있었습니다. 해당 문구를 표시하는 데 별도 자막 스트림은 필요하지 않았습니다.


테스트 영상에 영구적으로 입힌 첫 번째 자막

1초 시점의 합성 샘플입니다. 자막 텍스트는 디코딩한 영상 프레임의 일부입니다. 로컬 FFmpeg 예시이며, Perso에서 생성한 영상이 아닙니다.

같은 입력 파일로 테스트해 보세요. 원본 테스트 MP4와 네 개 항목의 SRT입니다. 내장 자막 트랙 결과와 자막을 입힌 결과를 비교하세요.

이 검사는 예제 파일을 어떻게 구성했는지 확인합니다. 모든 휴대전화, 소셜 플랫폼, 학습 관리 시스템과의 호환성을 입증하지는 않습니다. 무음 예제이므로 특정 오디오 코덱이 보존되는지도 검증하지 않습니다.

늦게 나오거나 사라지거나 글자가 깨지는 자막 수정하기

자막이 잘못된 시점에 나타날 때

영상에서 명확히 식별할 수 있는 장면과 첫 번째 자막을 대조하세요. 타이밍 예시에서 첫 자막의 시작 시각을 00:00:00,500에서 00:00:02,500으로 바꾸면 2초 늦게 나타납니다. 원래 타임스탬프로 복원하면 의도적으로 넣은 이 지연이 해결됩니다.

모든 자막이 같은 시간만큼 늦으면 자막 편집기에서 전체 트랙을 그만큼 이동하세요. 영상이 진행될수록 차이가 커진다면, 일정한 시간만큼 옮기기 전에 편집본 차이나 시간 변환 문제를 살펴보세요. 조정한 뒤에는 시작, 중간, 끝을 확인하세요.

업로드한 뒤 자막이 사라질 때

먼저 어떤 전달 방식을 사용했는지 확인하세요. 업로드한 플랫폼이 내장 텍스트 트랙을 노출하지 않을 수 있습니다. 별도 SRT는 플랫폼의 자막 업로드 절차를 거쳐야 합니다. 영상에 입힌 자막은 이미 화면에 포함되어 있으므로, 글자가 없다면 내보낸 파일 자체를 확인하세요.

이미 자막을 입힌 버전에 플랫폼의 자막 트랙을 추가하려면 먼저 시청 결과를 확인하세요. 두 자막 레이어가 겹쳐 보일 수 있습니다.

글자가 잘못 표시될 때

저장된 텍스트의 인코딩과 렌더링 폰트에 필요한 글자가 있는지 확인하세요. 인코딩 문제와 폰트의 글리프 누락은 해결 방법이 다릅니다. 전체 영상을 처리하기 전에 문제가 생긴 글자가 포함된 짧은 자막을 내보내 확인하세요.

파일을 합치기 전에 자막을 만들어야 하나요?

정확한 SRT가 이미 있으면 그대로 사용하세요. 자막을 만들거나 번역해야 한다면 Perso 자막 워크플로우 또는 다국어 자막 가이드에서 시작하세요.

자막과 함께 음성도 번역하려면 Perso Dubbing을 살펴보세요. 전달할 파일을 구성하기 전에 자막 텍스트를 최종 오디오와 편집본에 맞추세요.

자주 묻는 질문

영상 없이 SRT를 MP4로 변환할 수 있나요?
SRT에는 자막 텍스트와 타이밍이 들어 있습니다. 유용한 영상을 만들려면 화면 콘텐츠가 필요합니다. .srt 파일명을 .mp4로 바꿔도 영상 프레임은 생기지 않습니다. 이 가이드는 기존 MP4와 그 영상에 맞는 자막 파일을 결합합니다.

완성된 MP4에서 시청자가 자막을 없앨 수 있나요?
지원하는 플레이어에서는 내장 자막 트랙을 끌 수 있습니다. 영상에 입힌 글자는 화면의 일부이므로 자막 메뉴에서 끌 수 없습니다. 글자가 없는 버전이나 수정한 자막이 있는 버전을 내보낼 수 있도록 자막 없는 원본을 보관하세요.

SRT를 추가하면 화질이 떨어지나요?
내장 자막 트랙 명령은 영상을 재인코딩하지 않고 영상 스트림을 복사합니다. 자막을 입히는 명령은 텍스트를 포함하도록 영상을 다시 인코딩합니다. 시청자가 실제로 볼 크기에서 출력 영상과 자막을 확인하세요.

MP4에 SRT 자막을 선택 가능한 자막 트랙으로 추가하거나, 텍스트를 영상에 직접 입혀 항상 표시할 수 있습니다.

어떤 방식이 적합한지는 영상을 재생할 곳에 따라 달라집니다. 선택형 트랙은 호환되는 플레이어에서 자막을 끌 수 있습니다. 영상에 입힌 자막은 화면에 계속 남습니다. 게시 플랫폼이 별도 자막 파일을 지원한다면 MP4와 SRT를 합치지 않고 따로 사용할 수도 있습니다.

이 가이드는 이미 준비된 영상과 자막 파일로 시작합니다. 음성을 텍스트로 변환하는 과정 대신, 두 파일을 배포용으로 구성하는 방법을 다룹니다.

자막을 전달할 방식 선택하기

방식

전달할 파일

시청자가 자막을 끌 수 있나요?

영상 화면을 다시 인코딩하나요?

별도 SRT

MP4와 SRT

플랫폼이나 플레이어가 자막을 지원하면 가능

원본 파일은 재인코딩하지 않음

내장 자막 트랙

텍스트 트랙을 포함한 MP4 하나

호환되는 플레이어에서 가능

아래 스트림 복사 방식에서는 재인코딩하지 않음

영상에 입힌 자막

화면에 텍스트가 포함된 MP4 하나

불가능

아래 방식에서는 재인코딩함

검토용 영상에서는 선택형 자막을 쓰면 시청자가 글자 없이 화면을 확인할 수 있습니다. 특정 문구를 항상 보여야 하는 영상에는 자막을 입혀 표시를 고정할 수 있습니다. 나중에 텍스트를 수정하려면 자막을 입힌 버전을 다시 내보내야 하므로, 자막 없는 원본과 SRT를 보관하세요.

내장 트랙도 재생 환경의 영향을 받습니다. MP4 하나를 전달한다고 모든 웹사이트나 앱에서 텍스트 트랙을 보여 주는 것은 아닙니다. 전달 전에 실제 재생할 환경에서 테스트하세요.

MP4와 UTF-8 SRT 준비하기

original.mp4와 captions.srt를 같은 작업 폴더에 넣으세요. 원본의 복사본을 사용하세요. 아래 명령은 새 출력 파일을 만들므로, 아직 사용하지 않은 출력 파일명을 지정하세요.

SRT의 자막 항목은 번호, 시작 및 종료 시각, 자막 텍스트로 구성됩니다. 항목 사이에는 빈 줄을 넣으세요.


파일을 UTF-8 텍스트로 저장하고 .srt 확장자를 사용하세요. 자막과 영상의 편집본이 같은지 확인하세요. 이전 편집본의 자막 파일은 문구가 맞아도 타이밍이 어긋날 수 있습니다.

아래 방법은 공식 다운로드 경로에서 받은 FFmpeg를 사용합니다. 자막을 영상에 입히려면 subtitles 필터와 libass를 지원하는 빌드가 필요합니다. FFmpeg를 설치했다고 이 선택적 필터까지 포함되는 것은 아닙니다.

영상을 재인코딩하지 않고 선택형 자막 트랙 추가하기

파일이 있는 폴더에서 터미널을 열고 실행하세요. 아래 예시는 macOS/Linux 셸 문법을 사용합니다. Windows 셸은 따옴표와 줄 연결 방식이 다릅니다.

ffmpeg -i original.mp4 -i captions.srt \
  -map 0:v:0 -map '0:a?' -map 1:0 \
  -c:v copy -c:a copy -c:s mov_text \
  -metadata:s:s:0 language

이 명령은 원본의 첫 번째 영상 스트림, 오디오 스트림이 있으면 해당 스트림들, SRT 입력을 선택합니다. 영상과 오디오는 복사하고 자막은 MP4 텍스트 트랙으로 인코딩합니다. 자막이 다른 언어라면 언어 메타데이터를 변경하세요. 이 언어 표시는 텍스트를 번역하지 않습니다.

예시는 원본 스트림을 MP4에서 사용할 수 있다고 가정합니다. FFmpeg가 호환되지 않는 오디오 코덱 오류를 보고하면, 오류 메시지만 지우고 같은 명령을 재시도하지 말고 적절한 오디오 변환 방식을 선택하세요. 이를 결정하는 동안 원본 파일을 보관하세요.

사용할 플레이어에서 selectable.mp4를 열고 자막 또는 언어 메뉴를 찾으세요. 영어 트랙을 켰다가 꺼 보세요. 자막 옵션이 없다면 내장 형식을 지원하는 플레이어에서 테스트하거나, 전달 대상이 지원하는 방식을 사용하세요.

자막 스트림이 있다는 사실만으로 재생 테스트를 마치지 마세요. 파일이 유효해도 플레이어가 자막을 노출하지 않을 수 있습니다.

SRT를 MP4 화면에 입히기

같은 작업 폴더에서 이 명령을 실행하세요.

ffmpeg -i original.mp4 -vf "subtitles=captions.srt" \
  -map 0:v:0 -map '0:a?' \
  -c:v libx264 -crf 18 -pix_fmt yuv420p \
  -c

자막 필터는 프레임에 텍스트를 그립니다. 영상은 H.264로 다시 인코딩됩니다. 여기의 CRF 설정은 재현 가능한 예시이며, 모든 영상에 권장하는 품질 설정은 아닙니다. 직접 만든 출력물의 글자 가독성, 화질, 파일 크기를 확인하세요.

테스트할 때는 예시에 나온 간단한 파일명을 사용하세요. 공백이나 특수문자가 있는 파일 경로는 FFmpeg 필터 안에서 따옴표 처리가 추가로 필요할 수 있습니다. 두 입력 파일을 같은 폴더에 두면 첫 테스트에서 이 변수를 없앨 수 있습니다.

명령이 No such filter: subtitles를 보고하면 설치된 빌드를 확인하세요. 필요한 자막 렌더링 의존성을 포함해 컴파일한 버전이 필요합니다. FFmpeg 자막 필터 문서에 요구 사항이 설명되어 있습니다. SRT 파일명을 바꿔도 없는 필터가 추가되지는 않습니다.

그래픽 인터페이스로 작업하려면 HandBrake의 SRT 가져오기와 자막 입히기 문서를 참고하세요. 이 가이드의 예제 파일은 FFmpeg로 만들었습니다. HandBrake UI를 단계별로 안내하는 예시는 아닙니다.

재현 가능한 테스트에서 확인한 결과

오디오가 없는 12초 길이의 1280 × 720 합성 테스트 영상과 네 개 항목의 영어 SRT를 만들었습니다. FFmpeg 9.0.1로 내장 자막 트랙 MP4와 자막을 입힌 MP4를 생성했습니다.

내장 자막 버전에는 H.264 영상과 mov_text 자막 스트림이 들어 있었습니다. 해당 스트림을 SRT로 다시 추출했을 때, 끝부분의 빈 줄 차이만 있었고 자막 문구와 타임스탬프는 보존되었습니다. 디코딩한 영상의 해시가 원본과 일치해, 이 테스트에서는 화면이 그대로 유지됐음을 확인했습니다.

자막을 입힌 출력물에는 디코딩한 프레임에서 자막 텍스트가 보이는 영상 스트림이 들어 있었습니다. 해당 문구를 표시하는 데 별도 자막 스트림은 필요하지 않았습니다.


테스트 영상에 영구적으로 입힌 첫 번째 자막

1초 시점의 합성 샘플입니다. 자막 텍스트는 디코딩한 영상 프레임의 일부입니다. 로컬 FFmpeg 예시이며, Perso에서 생성한 영상이 아닙니다.

같은 입력 파일로 테스트해 보세요. 원본 테스트 MP4와 네 개 항목의 SRT입니다. 내장 자막 트랙 결과와 자막을 입힌 결과를 비교하세요.

이 검사는 예제 파일을 어떻게 구성했는지 확인합니다. 모든 휴대전화, 소셜 플랫폼, 학습 관리 시스템과의 호환성을 입증하지는 않습니다. 무음 예제이므로 특정 오디오 코덱이 보존되는지도 검증하지 않습니다.

늦게 나오거나 사라지거나 글자가 깨지는 자막 수정하기

자막이 잘못된 시점에 나타날 때

영상에서 명확히 식별할 수 있는 장면과 첫 번째 자막을 대조하세요. 타이밍 예시에서 첫 자막의 시작 시각을 00:00:00,500에서 00:00:02,500으로 바꾸면 2초 늦게 나타납니다. 원래 타임스탬프로 복원하면 의도적으로 넣은 이 지연이 해결됩니다.

모든 자막이 같은 시간만큼 늦으면 자막 편집기에서 전체 트랙을 그만큼 이동하세요. 영상이 진행될수록 차이가 커진다면, 일정한 시간만큼 옮기기 전에 편집본 차이나 시간 변환 문제를 살펴보세요. 조정한 뒤에는 시작, 중간, 끝을 확인하세요.

업로드한 뒤 자막이 사라질 때

먼저 어떤 전달 방식을 사용했는지 확인하세요. 업로드한 플랫폼이 내장 텍스트 트랙을 노출하지 않을 수 있습니다. 별도 SRT는 플랫폼의 자막 업로드 절차를 거쳐야 합니다. 영상에 입힌 자막은 이미 화면에 포함되어 있으므로, 글자가 없다면 내보낸 파일 자체를 확인하세요.

이미 자막을 입힌 버전에 플랫폼의 자막 트랙을 추가하려면 먼저 시청 결과를 확인하세요. 두 자막 레이어가 겹쳐 보일 수 있습니다.

글자가 잘못 표시될 때

저장된 텍스트의 인코딩과 렌더링 폰트에 필요한 글자가 있는지 확인하세요. 인코딩 문제와 폰트의 글리프 누락은 해결 방법이 다릅니다. 전체 영상을 처리하기 전에 문제가 생긴 글자가 포함된 짧은 자막을 내보내 확인하세요.

파일을 합치기 전에 자막을 만들어야 하나요?

정확한 SRT가 이미 있으면 그대로 사용하세요. 자막을 만들거나 번역해야 한다면 Perso 자막 워크플로우 또는 다국어 자막 가이드에서 시작하세요.

자막과 함께 음성도 번역하려면 Perso Dubbing을 살펴보세요. 전달할 파일을 구성하기 전에 자막 텍스트를 최종 오디오와 편집본에 맞추세요.

자주 묻는 질문

영상 없이 SRT를 MP4로 변환할 수 있나요?
SRT에는 자막 텍스트와 타이밍이 들어 있습니다. 유용한 영상을 만들려면 화면 콘텐츠가 필요합니다. .srt 파일명을 .mp4로 바꿔도 영상 프레임은 생기지 않습니다. 이 가이드는 기존 MP4와 그 영상에 맞는 자막 파일을 결합합니다.

완성된 MP4에서 시청자가 자막을 없앨 수 있나요?
지원하는 플레이어에서는 내장 자막 트랙을 끌 수 있습니다. 영상에 입힌 글자는 화면의 일부이므로 자막 메뉴에서 끌 수 없습니다. 글자가 없는 버전이나 수정한 자막이 있는 버전을 내보낼 수 있도록 자막 없는 원본을 보관하세요.

SRT를 추가하면 화질이 떨어지나요?
내장 자막 트랙 명령은 영상을 재인코딩하지 않고 영상 스트림을 복사합니다. 자막을 입히는 명령은 텍스트를 포함하도록 영상을 다시 인코딩합니다. 시청자가 실제로 볼 크기에서 출력 영상과 자막을 확인하세요.

MP4에 SRT 자막을 선택 가능한 자막 트랙으로 추가하거나, 텍스트를 영상에 직접 입혀 항상 표시할 수 있습니다.

어떤 방식이 적합한지는 영상을 재생할 곳에 따라 달라집니다. 선택형 트랙은 호환되는 플레이어에서 자막을 끌 수 있습니다. 영상에 입힌 자막은 화면에 계속 남습니다. 게시 플랫폼이 별도 자막 파일을 지원한다면 MP4와 SRT를 합치지 않고 따로 사용할 수도 있습니다.

이 가이드는 이미 준비된 영상과 자막 파일로 시작합니다. 음성을 텍스트로 변환하는 과정 대신, 두 파일을 배포용으로 구성하는 방법을 다룹니다.

자막을 전달할 방식 선택하기

방식

전달할 파일

시청자가 자막을 끌 수 있나요?

영상 화면을 다시 인코딩하나요?

별도 SRT

MP4와 SRT

플랫폼이나 플레이어가 자막을 지원하면 가능

원본 파일은 재인코딩하지 않음

내장 자막 트랙

텍스트 트랙을 포함한 MP4 하나

호환되는 플레이어에서 가능

아래 스트림 복사 방식에서는 재인코딩하지 않음

영상에 입힌 자막

화면에 텍스트가 포함된 MP4 하나

불가능

아래 방식에서는 재인코딩함

검토용 영상에서는 선택형 자막을 쓰면 시청자가 글자 없이 화면을 확인할 수 있습니다. 특정 문구를 항상 보여야 하는 영상에는 자막을 입혀 표시를 고정할 수 있습니다. 나중에 텍스트를 수정하려면 자막을 입힌 버전을 다시 내보내야 하므로, 자막 없는 원본과 SRT를 보관하세요.

내장 트랙도 재생 환경의 영향을 받습니다. MP4 하나를 전달한다고 모든 웹사이트나 앱에서 텍스트 트랙을 보여 주는 것은 아닙니다. 전달 전에 실제 재생할 환경에서 테스트하세요.

MP4와 UTF-8 SRT 준비하기

original.mp4와 captions.srt를 같은 작업 폴더에 넣으세요. 원본의 복사본을 사용하세요. 아래 명령은 새 출력 파일을 만들므로, 아직 사용하지 않은 출력 파일명을 지정하세요.

SRT의 자막 항목은 번호, 시작 및 종료 시각, 자막 텍스트로 구성됩니다. 항목 사이에는 빈 줄을 넣으세요.


파일을 UTF-8 텍스트로 저장하고 .srt 확장자를 사용하세요. 자막과 영상의 편집본이 같은지 확인하세요. 이전 편집본의 자막 파일은 문구가 맞아도 타이밍이 어긋날 수 있습니다.

아래 방법은 공식 다운로드 경로에서 받은 FFmpeg를 사용합니다. 자막을 영상에 입히려면 subtitles 필터와 libass를 지원하는 빌드가 필요합니다. FFmpeg를 설치했다고 이 선택적 필터까지 포함되는 것은 아닙니다.

영상을 재인코딩하지 않고 선택형 자막 트랙 추가하기

파일이 있는 폴더에서 터미널을 열고 실행하세요. 아래 예시는 macOS/Linux 셸 문법을 사용합니다. Windows 셸은 따옴표와 줄 연결 방식이 다릅니다.

ffmpeg -i original.mp4 -i captions.srt \
  -map 0:v:0 -map '0:a?' -map 1:0 \
  -c:v copy -c:a copy -c:s mov_text \
  -metadata:s:s:0 language

이 명령은 원본의 첫 번째 영상 스트림, 오디오 스트림이 있으면 해당 스트림들, SRT 입력을 선택합니다. 영상과 오디오는 복사하고 자막은 MP4 텍스트 트랙으로 인코딩합니다. 자막이 다른 언어라면 언어 메타데이터를 변경하세요. 이 언어 표시는 텍스트를 번역하지 않습니다.

예시는 원본 스트림을 MP4에서 사용할 수 있다고 가정합니다. FFmpeg가 호환되지 않는 오디오 코덱 오류를 보고하면, 오류 메시지만 지우고 같은 명령을 재시도하지 말고 적절한 오디오 변환 방식을 선택하세요. 이를 결정하는 동안 원본 파일을 보관하세요.

사용할 플레이어에서 selectable.mp4를 열고 자막 또는 언어 메뉴를 찾으세요. 영어 트랙을 켰다가 꺼 보세요. 자막 옵션이 없다면 내장 형식을 지원하는 플레이어에서 테스트하거나, 전달 대상이 지원하는 방식을 사용하세요.

자막 스트림이 있다는 사실만으로 재생 테스트를 마치지 마세요. 파일이 유효해도 플레이어가 자막을 노출하지 않을 수 있습니다.

SRT를 MP4 화면에 입히기

같은 작업 폴더에서 이 명령을 실행하세요.

ffmpeg -i original.mp4 -vf "subtitles=captions.srt" \
  -map 0:v:0 -map '0:a?' \
  -c:v libx264 -crf 18 -pix_fmt yuv420p \
  -c

자막 필터는 프레임에 텍스트를 그립니다. 영상은 H.264로 다시 인코딩됩니다. 여기의 CRF 설정은 재현 가능한 예시이며, 모든 영상에 권장하는 품질 설정은 아닙니다. 직접 만든 출력물의 글자 가독성, 화질, 파일 크기를 확인하세요.

테스트할 때는 예시에 나온 간단한 파일명을 사용하세요. 공백이나 특수문자가 있는 파일 경로는 FFmpeg 필터 안에서 따옴표 처리가 추가로 필요할 수 있습니다. 두 입력 파일을 같은 폴더에 두면 첫 테스트에서 이 변수를 없앨 수 있습니다.

명령이 No such filter: subtitles를 보고하면 설치된 빌드를 확인하세요. 필요한 자막 렌더링 의존성을 포함해 컴파일한 버전이 필요합니다. FFmpeg 자막 필터 문서에 요구 사항이 설명되어 있습니다. SRT 파일명을 바꿔도 없는 필터가 추가되지는 않습니다.

그래픽 인터페이스로 작업하려면 HandBrake의 SRT 가져오기와 자막 입히기 문서를 참고하세요. 이 가이드의 예제 파일은 FFmpeg로 만들었습니다. HandBrake UI를 단계별로 안내하는 예시는 아닙니다.

재현 가능한 테스트에서 확인한 결과

오디오가 없는 12초 길이의 1280 × 720 합성 테스트 영상과 네 개 항목의 영어 SRT를 만들었습니다. FFmpeg 9.0.1로 내장 자막 트랙 MP4와 자막을 입힌 MP4를 생성했습니다.

내장 자막 버전에는 H.264 영상과 mov_text 자막 스트림이 들어 있었습니다. 해당 스트림을 SRT로 다시 추출했을 때, 끝부분의 빈 줄 차이만 있었고 자막 문구와 타임스탬프는 보존되었습니다. 디코딩한 영상의 해시가 원본과 일치해, 이 테스트에서는 화면이 그대로 유지됐음을 확인했습니다.

자막을 입힌 출력물에는 디코딩한 프레임에서 자막 텍스트가 보이는 영상 스트림이 들어 있었습니다. 해당 문구를 표시하는 데 별도 자막 스트림은 필요하지 않았습니다.


테스트 영상에 영구적으로 입힌 첫 번째 자막

1초 시점의 합성 샘플입니다. 자막 텍스트는 디코딩한 영상 프레임의 일부입니다. 로컬 FFmpeg 예시이며, Perso에서 생성한 영상이 아닙니다.

같은 입력 파일로 테스트해 보세요. 원본 테스트 MP4와 네 개 항목의 SRT입니다. 내장 자막 트랙 결과와 자막을 입힌 결과를 비교하세요.

이 검사는 예제 파일을 어떻게 구성했는지 확인합니다. 모든 휴대전화, 소셜 플랫폼, 학습 관리 시스템과의 호환성을 입증하지는 않습니다. 무음 예제이므로 특정 오디오 코덱이 보존되는지도 검증하지 않습니다.

늦게 나오거나 사라지거나 글자가 깨지는 자막 수정하기

자막이 잘못된 시점에 나타날 때

영상에서 명확히 식별할 수 있는 장면과 첫 번째 자막을 대조하세요. 타이밍 예시에서 첫 자막의 시작 시각을 00:00:00,500에서 00:00:02,500으로 바꾸면 2초 늦게 나타납니다. 원래 타임스탬프로 복원하면 의도적으로 넣은 이 지연이 해결됩니다.

모든 자막이 같은 시간만큼 늦으면 자막 편집기에서 전체 트랙을 그만큼 이동하세요. 영상이 진행될수록 차이가 커진다면, 일정한 시간만큼 옮기기 전에 편집본 차이나 시간 변환 문제를 살펴보세요. 조정한 뒤에는 시작, 중간, 끝을 확인하세요.

업로드한 뒤 자막이 사라질 때

먼저 어떤 전달 방식을 사용했는지 확인하세요. 업로드한 플랫폼이 내장 텍스트 트랙을 노출하지 않을 수 있습니다. 별도 SRT는 플랫폼의 자막 업로드 절차를 거쳐야 합니다. 영상에 입힌 자막은 이미 화면에 포함되어 있으므로, 글자가 없다면 내보낸 파일 자체를 확인하세요.

이미 자막을 입힌 버전에 플랫폼의 자막 트랙을 추가하려면 먼저 시청 결과를 확인하세요. 두 자막 레이어가 겹쳐 보일 수 있습니다.

글자가 잘못 표시될 때

저장된 텍스트의 인코딩과 렌더링 폰트에 필요한 글자가 있는지 확인하세요. 인코딩 문제와 폰트의 글리프 누락은 해결 방법이 다릅니다. 전체 영상을 처리하기 전에 문제가 생긴 글자가 포함된 짧은 자막을 내보내 확인하세요.

파일을 합치기 전에 자막을 만들어야 하나요?

정확한 SRT가 이미 있으면 그대로 사용하세요. 자막을 만들거나 번역해야 한다면 Perso 자막 워크플로우 또는 다국어 자막 가이드에서 시작하세요.

자막과 함께 음성도 번역하려면 Perso Dubbing을 살펴보세요. 전달할 파일을 구성하기 전에 자막 텍스트를 최종 오디오와 편집본에 맞추세요.

자주 묻는 질문

영상 없이 SRT를 MP4로 변환할 수 있나요?
SRT에는 자막 텍스트와 타이밍이 들어 있습니다. 유용한 영상을 만들려면 화면 콘텐츠가 필요합니다. .srt 파일명을 .mp4로 바꿔도 영상 프레임은 생기지 않습니다. 이 가이드는 기존 MP4와 그 영상에 맞는 자막 파일을 결합합니다.

완성된 MP4에서 시청자가 자막을 없앨 수 있나요?
지원하는 플레이어에서는 내장 자막 트랙을 끌 수 있습니다. 영상에 입힌 글자는 화면의 일부이므로 자막 메뉴에서 끌 수 없습니다. 글자가 없는 버전이나 수정한 자막이 있는 버전을 내보낼 수 있도록 자막 없는 원본을 보관하세요.

SRT를 추가하면 화질이 떨어지나요?
내장 자막 트랙 명령은 영상을 재인코딩하지 않고 영상 스트림을 복사합니다. 자막을 입히는 명령은 텍스트를 포함하도록 영상을 다시 인코딩합니다. 시청자가 실제로 볼 크기에서 출력 영상과 자막을 확인하세요.

계속 읽기

모두 보기

MP4에 SRT 자막 추가하기: 영상에 입히기와 선택형 자막
제품 가이드

MP4에 SRT 자막 추가하기: 영상에 입히기와 선택형 자막

성장 및 제품 소유자 리더 배운태

배운태

그로스 총괄 & 프로덕트 오너

하나의 녹음에서 두 사람의 목소리를 분리하는 방법
제품 가이드

하나의 녹음에서 두 사람의 목소리를 분리하는 방법

성장 및 제품 소유자 리더 배운태

배운태

그로스 총괄 & 프로덕트 오너

구글 번역·ChatGPT로 영상 번역이 가능한지 정리 (2026) - Perso Dubbing
AI 전략

구글 번역이나 ChatGPT로 영상 번역이 될까? (2026)

성장 및 제품 소유자 리더 배운태

배운태

그로스 총괄 & 프로덕트 오너