ffmpeg를 사용하여 스트림에서 자막을 하드코딩하는 방법은 무엇입니까?

ffmpeg를 사용하여 스트림에서 자막을 하드코딩하는 방법은 무엇입니까?

새 동영상에 자막을 하드코딩하려고 합니다. 원본 비디오에는 자막 스트림, 즉 총 비디오, 오디오 및 자막(다른 스트림 중에서)이 포함되어 있습니다.

...
Stream #0:0(eng): Video: h264 (High 10), yuv420p10le(progressive), 1280x720, SAR 1:1 DAR 16:9, 23.98 fps, 23.98 tbr, 1k tbn, 4534142.86 tbc (default)
Stream #0:1(jpn): Audio: aac (HE-AAC), 48000 Hz, stereo, fltp
Metadata:
  title           : 2.0 AAC
Stream #0:2(eng): Subtitle: ass (default)
Metadata:
  title           : FFF
Stream #0:3: Attachment: ttf
Metadata:
  filename        : DFKanTeiRyu-XB.ttf
  mimetype        : application/x-truetype-font
...

다음 명령을 사용했습니다.

ffmpeg -i input.mkv -c:v libx264  -c:a libmp3lame -c:s mov_text -map 0:0 -map 0:1 -map 0:2 output.mp4

출력 파일을 생성하지만 자막이 하드코딩되지 않습니다(그래서 멍청한 TV는 이를 표시/인식하지 못합니다).

자막이 있는 비디오를 변환하는 방법은 무엇입니까?

답변1

"자막" 필터를 사용하여 mkv에서 직접 자막을 구울 수 있습니다.

그냥 추가하세요-vf "subtitles='$PATH_TO_MKV':stream_index=$SUBTITLE_ID"

ffmpeg -i input.mkv -c:v libx264 -vf "subtitles=input.mkv:stream_index=0" output.mkv

stream_index매개변수는 선택사항입니다. 0부터 시작하므로 stream_index=1컨테이너의 두 번째 자막 스트림이 선택됩니다.

자세한 내용은 여기에서 "자막" 필터 문서를 참조하세요.http://ffmpeg.org/ffmpeg-filters.html#subtitles

이 링크에 대한 일반 필터링 지침https://trac.ffmpeg.org/wiki/FilteringGuide

답변2

방법은 먼저 엉덩이 자막을 추출하는 것입니다.

ffmpeg -i input.mkv -c:s copy subtitle.ass

그런 다음 설명된 대로 비디오로 "굽습니다".여기:

ffmpeg -i video.avi -vf "ass=subtitle.ass" out.avi

관련 정보