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