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 - 출력 파일 이름
완료되었습니다. 여기에는 글자 수 제한이 없기를 바랍니다.