내 프로세스는 다음과 같습니다.

내 프로세스는 다음과 같습니다.

dvdsub(이미지 기반) 자막을 srt로 변환하는 방법이 있습니까? 예를 들어 tesseract와 결합된 mencoder 또는 ffmpeg를 사용합니까?

저는 명령줄 기반의 것을 찾고 있는데 몇 가지 과정을 거쳐도 괜찮습니다.

나는 GUI 기반 도구에 덜 관심이 있습니다.

답변1

아마도 이미 해결책을 찾았을 것입니다. 하지만 이것이 'ffmpeg ocr dvdsub srt'에 대한 첫 번째 검색 결과였으므로 여기에 제가 사용하는 도구가 있습니다.

https://github.com/ruediger/VobSub2SRT

완벽하지 않으며 약간의 편집이 필요할 수 있습니다.

내 방법보다 이 작업을 더 잘 수행하는 기능을 ffmpeg에서 찾으려고 노력 중이었지만 이것을 발견하고 내려가야 했던 토끼굴이 기억났으므로 이것이 누군가에게 도움이 되기를 바랍니다.

내 프로세스는 다음과 같습니다.

.mkv에서 dvdsub를 추출하는 경우

mkvtoolnix-cli에서 mkvextract 사용

mkvextract video.mkv tracks 2:video.idx

  • arg 1 - dvdsub가 포함된 비디오의 파일 이름
  • arg 2 - 추출 유형
  • 인수 3 - [dvdsub가 포함된 스트림 #]:[추출된 파일의 원하는 파일 이름].idx

내 예에서는 video.idx 및 video.sub 파일을 생성했을 것입니다.

.idx 및 .sub 파일에서 subrip 생성

vobsub2srt 사용

vobsub2srt는 tesseract를 사용하며 tesseract의 레거시 모드를 사용하는 것이 가장 효과적이라는 것을 알았습니다.

vobsub2srt --tesseract-oem 0 video

  • arg 1 - Tesseract 엔진 모드( tesseract --help-oem모드용)
  • arg 2 - 레거시 모드
  • 인수 3 - 파일 이름둘 다.idx 및 .sub없이확대

내 예에서는 video.srt가 생성되었을 것입니다.

서브립 파일 검사 및 편집

내가 겪은 실수

  • '|' 'I' 대신에 tesseract의 레거시 모드는 이런 실수를 자주 하지 않는 것 같습니다.
  • `대신에
  • 간격, 줄이 '-'로 시작하는 경우 '-'와 첫 번째 단어 사이에 공백이 없어야 합니다.
  • 없어진 ' & "
  • '나' 또는 '|' '[' 대신 레거시는 이런 실수를 자주 하지 않는 것 같습니다.

편집하다

subrip 파일에 익숙하지 않은 경우 간단히 텍스트 편집기에 넣을 수 있습니다.

grep, vim, sed는 여러분의 친구입니다.

그러나 레거시 모드에서 발생하는 대부분의 실수는 쉽게 무시할 수 있습니다.

dvdsub를 subrip(srt)로 교체하기

ffmpeg 사용

ffmpeg -i video.mkv -i video.srt -c copy -c:s subrip -map 0:v -map 0:a -map 1 final-video.mkv

  • 인수 1 & 2 - 입력 #1 - dvdsub가 포함된 비디오 파일
  • 인수 3 & 4 - 입력 #2 - Subrip 파일
  • arg 5 - 모든 스트림에 사용되는 코덱
  • arg 6 - 모든 스트림을 복사합니다(비디오 및 오디오만 복사됨).
  • arg 7 - 자막 코덱(자막의 경우 arg 5를 재정의함)
  • arg 8 - 자막 코덱으로 subrip을 선택합니다(중복될 수 있지만 안전>죄송합니다)
  • 인수 9 & 10 - 첫 번째 입력의 비디오 스트림을 출력의 첫 번째 스트림으로 매핑합니다.
  • arg 11 & 12 - 첫 번째 입력의 오디오 스트림을 출력의 두 번째 스트림으로 매핑합니다.
  • 인수 13 & 14 - 두 번째 입력의 자막 스트림을 출력의 세 번째 스트림으로 매핑합니다.
  • arg 15 - 출력 파일 이름

완료되었습니다. 여기에는 글자 수 제한이 없기를 바랍니다.

관련 정보