2013-12-19 1 views
10

나는 FFMPEG 문서와 많은 포럼을 확인하고 그래서 같이한다 .MP4 비디오에서 자막을 추출 할 수있는 올바른 명령 줄 알아 낸 : 그러나ffmpeg를 사용하여 MP4 비디오에서 SubRip (SRT) 자막을 추출 할 수 있습니까?

ffmpeg -i video.mp4 -vn -an -codec:s:0 srt out.srt 

을, 나는 나에게 다음과 같은 오류를 준다 얻을하는 이 가능한 전혀인지 질문 :

오류를 출력 스트림 # 0 인코더를 여는 동안 : 0 - 어쩌면 잘못된 매개 변수 같은 bit_rate, 속도, 폭 또는 높이로

,536,

ffmpeg -codecs을 사용하면 ffmpeg가 서브 립 자막을 인코딩 할 수 있어야합니다. 내가 코멘트하지만 난에 표시되는 간단한 명령 줄에서 테스트 한

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'video.mp4': 
... 
Stream #0:0(und): Video: h264 (Constrained Baseline) (avc1/0x31637661), yuv420p, 720x572 [SAR 64:45 DAR 256:143], 1341 kb/s, 25 fps, 25 tbr, 90k tbn, 180k tbc 
Stream #0:1(eng): Audio: aac (mp4a/0x6134706D), 48000 Hz, stereo, fltp, 191 kb/s 
Stream #0:2(fra): Audio: aac (mp4a/0x6134706D), 48000 Hz, stereo, fltp, 191 kb/s 
Stream #0:3(eng): Subtitle: dvd_subtitle (mp4s/0x7334706D) 
Stream #0:4(und): Subtitle: mov_text (text/0x74786574) 

편집 : 나는 비디오에 포함 된 두 개의 자막 트랙이 있음을 볼 수 있습니다 ffmpeg -i video.mp4를 사용

여전히 같은 오류가 발생합니다. 다음은 a link to the detailed verbose output입니다. 또한 결과 출력에서 ​​메타 데이터와 챕터를 완전히 비활성화하려고 시도했지만 여전히 동일한 오류가 발생합니다.

+3

간단한 'ffmpeg -i in.mp4 out.srt'가 올바르게 작동합니다. (ffmpeg 2.0.1) – pogorskiy

+0

'ffmpeg ... -loglevel debug ...'오류에 대한 자세한 정보를 얻으려고 시도한다. – pogorskiy

+0

두 가지 제안을 모두 시도했지만 명백한 실수는 식별 할 수 없다. 아마도 이것은 결과 srt 파일에 장 표시자를 출력하려고 시도하는 ffmpeg로 인해 발생했을 것입니까? 나는 상세한 디버그 출력을 포함시켰다. –

답변

22

나는 enventually 내가 성공하지 않은 이유를 알아 냈 : 소스 비디오에서 자막 텍스트 기반의 표현으로 인코딩 된 경우

지정된 명령 줄이 완벽하게 잘했을 것이다. 그러나 ffmpeg -i 명령 줄의 출력에서 ​​볼 수 있듯이 자막은 "dvd_subtitle"형식으로 인코딩됩니다.

dvd_subtitle 형식은 비디오의 각 자막에 대한 비트 맵을 저장합니다. 따라서 ffmpeg가 비트 맵을 텍스트로 변환 할 수있는 방법이 없습니다.

이 작업을 수행하려면 OCR 기반 소프트웨어를 사용해야합니다.이 소프트웨어는 비트 맵 표현의 텍스트로 각 자막을 식별하는 작업을 도와줍니다.

(원본 비디오에는 2 차 텍스트 기반 자막이 있지만 대부분의 인기있는 플레이어가 어디에서 왔는지는 알지 못합니다. 모든 의도와 목적을 위해이 "mov_text"자막은 스텁 자리 표시 자일 수 있습니다. 원래 DVD에서 변환 한 것일 수도 있습니다.)

+0

나는 텍스트 트랙이 장 마커라고 생각한다. – mcdado

4

다만 (담당자가 아니기 때문에 주석을 달 수는 없지만) MP4에서 SRT를 추출하면 파일이 MOV_Text로 포맷되지 않습니다. 정규 SRT. 여전히 추가되고 작동하지만 mp4를 m4v로 변경하는 것과 같습니다. 일반적으로 작동하지만 코드에서 동일하게 동작하지는 않습니다. Mov_text는 글꼴/크기 등을 수동으로 조정할 때 끔찍합니다. 가장 좋은 방법은 웹에서 SRT를 다운로드하고 테스트하는 것입니다.

이 작동하지만 mov_text 코드 SRT 파일 발생합니다 :

ffmpeg -i in.mp4 out.srt 
0

.... 입력 파일에 너무 많은 스트림이있는 경우지도 옵션 ... 를 사용해보십시오

구문

ffmpeg -i video.MP4 -map 0 : 4 스트림 : 우리는 0에 두 번째 자막을 변환합니다 그래서 SRT로 변환 할 수 있도록 dvdsubtitle 3 : 4 첫째 0에서 동영상에 두 개의 자막 스트림이 있기 때문에

out.srt mov_text이며 자막의 부드러운 사본이므로 쉽게 변환 할 수 있습니다 ....

관련 문제