여러 자막 세트가 포함 된 MKV 파일은 자막이 전혀없는 SmartTV 또는 유사한 장치에서 재생을 거부합니다. mplayer는 문제없이 파일을 관리합니다. 파일에있는 내용은 다음과 같습니다.
$ ffprobe input.mkv |& grep Stream
Stream #0:0(zxx): Video: h264 (High), yuv420p(progressive), 716x360 [SAR 32:27 DAR 2864:1215], SAR 212:179 DAR 106:45, 23.98 fps, 23.98 tbr, 1k tbn, 47.95 tbc (default)
Stream #0:1(spa): Audio: ac3, 48000 Hz, stereo, fltp, 224 kb/s (default)
Stream #0:2(eng): Subtitle: dvd_subtitle, 720x480 (default)
Stream #0:3(fre): Subtitle: subrip
Stream #0:4(por): Subtitle: subrip
저의 능력이 부족한 플레이어는 SRT 이외의 자막 형식에 대처할 수 없습니다. 문제는 MKV 파일에서 기존 영어 자막 트랙을 추출하여 SRT로 변환 한 다음 선택적으로 다시 MKV 파일에 추가하는 것입니다.
"SRT 자막이 포함 된 MP4 파일을 본 적이 없습니다"외에 다른 질문 ( DVD 자막을 텍스트로 변환 )이 응답하지 않았습니다.
아마도 결정적인 https://trac.ffmpeg.org/wiki/ExtractSubtitles 에는 실제 ffmpeg 작업과 일치하지 않는 정보가 포함되어 있습니다. 이것은 내 ffmpeg입니다.
$ ffmpeg -v
ffmpeg version 3.3 Copyright (c) 2000-2017 the FFmpeg developers
built with gcc 7.1.0 (GCC)
configuration: --prefix=/usr --libdir=/usr/lib64 --shlibdir=/usr/lib64 --mandir=/usr/man --disable-static --enable-shared --enable-runtime-cpudetect --enable-avresample --enable-gpl --enable-version3 --enable-pthreads --enable-postproc --disable-debug --disable-indev=jack --disable-outdev=jack --arch=x86_64 --enable-pic --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-gnutls --enable-libcaca --enable-libcdio --enable-libssh --enable-libtheora --enable-libv4l2 --enable-libvorbis --enable-libvpx --enable-libmp3lame --enable-opencl --enable-opengl --enable-libopenjpeg --enable-libpulse --enable-libsmbclient --enable-libwavpack
libavutil 55. 58.100 / 55. 58.100
libavcodec 57. 89.100 / 57. 89.100
libavformat 57. 71.100 / 57. 71.100
libavdevice 57. 6.100 / 57. 6.100
libavfilter 6. 82.100 / 6. 82.100
libavresample 3. 5. 0 / 3. 5. 0
libswscale 4. 6.100 / 4. 6.100
libswresample 2. 7.100 / 2. 7.100
libpostproc 54. 5.100 / 54. 5.100
그리고 이것이 성공하지 않고 시도한 것입니다.
$ ffmpeg -i input.mkv -map 0:2 subs-EN.srt
...
Stream mapping:
Stream #0:2 -> #0:0 (dvd_subtitle (dvdsub) -> subrip (srt))
Error while opening encoder for output stream #0:0 - maybe incorrect parameters such as bit_rate, rate, width or height
$ ffmpeg -codecs | grep dvdsub
...
DES... dvd_subtitle DVD subtitles (decoders: dvdsub ) (encoders: dvdsub )
따라서 dvdsub 디코더는 ffmpeg로 컴파일되지만 (자막이 mplayer에 표시되지 않음) 변환되지 않습니다.
나는 또한 시도했다
$ mplayer -dumpsrtsub -dumpfile subs-EN.srt -sid 0 input.mkv
MPlayer 1.3.0-7.1.0 (C) 2000-2016 MPlayer Team
...
[lavf] stream 0: video (h264), -vid 0
[lavf] stream 1: audio (ac3), -aid 0, -alang spa
[lavf] stream 2: subtitle (dvdsub), -sid 0, -slang eng
[lavf] stream 3: subtitle (srt), -sid 1, -slang fre
[lavf] stream 4: subtitle (srt), -sid 2, -slang por
...
올바른 자막 스트림이 재생되고 있지만 subs-EN.srt에는 아무것도 쓰지 않습니다.
내가 무엇을 잘못하고 있지?
1
참조 stackoverflow.com/a/36327919/5726027
—
기안
내가 참조. 감사. "dvdsub"를 요약하는 것은 텍스트 기반 자막 형식이 아니며 (놀라운 점은 렌더링에 사용 된 글꼴을 변경할 수 있기 때문에) srt로 변환하려면 OCR이 필요합니다. 그러나 비디오에 오버레이로 "번인"될 수 있습니다. 불행히도, 당신이 제공하는 두 가지 명령 중 어느 것도 잘 작동하지 않습니다. ffmpeg -i input.mkv -vf subtitles = input.mkv -acodec copy -sn conversion.mkv 또는 ffmpeg -i input.mkv -filter_complex "[0 : v : 0] [0 : 2] 오버레이 "-acodec copy -sn
—
conversion.mkv
ffmpeg -i input.mkv -vf subtitles = input.mkv -acodec copy -sn conversion.mkv가 해당 필터를 불평하지 않습니다 : '자막' ffmpeg -i input.mkv -filter_complex "[0 : v : 0] [0 : 2 ] overlay "-acodec copy -crf 20 -sn conversion.mkv 는 끔찍한 품질 출력을 생성합니다.
—
Edward Sternin
끔찍한 품질 출력 -> 자막 부분 또는 전체 그림? 후자의 경우, 픽처는 그 픽셀 내에 및 / 또는 저해상도의 스프라이트를 가질 수있다. 먼저 텍스트로 OCR 경로를 제안합니다. 자막 필터
—
Gyan
libass
를 컴파일 / 링크해야합니다.
비디오 대역폭이 매우 제한된 것처럼 전체 이미지가 고르지 않습니다. 실제로 -crf 20을 추가 해도 품질이 크게 향상되지는 않았습니다. 자막 내에 스프라이트 (?)가 있으며 해상도도 좋지만 결정적이지는 않습니다. 나는 당신이 모든 포럼에서 유일하게 독특하고 특이한 소프트웨어 인 ffmpeg를 이해하는 것 같습니다. 양해 해 주셔서 감사합니다.하지만 나머지 지역보다 몇 년 앞서서 계속 노력하고 있습니다. mplayer / mencoder 내에 동등한 전략이 있습니까? 나는 그 논리를 더 잘 이해하는 것 같습니다.
—
Edward Sternin