![ffmpeg를 사용하여 스트림에서 자막을 하드코딩하는 방법은 무엇입니까?](https://linux55.com/image/176942/ffmpeg%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%EC%8A%A4%ED%8A%B8%EB%A6%BC%EC%97%90%EC%84%9C%20%EC%9E%90%EB%A7%89%EC%9D%84%20%ED%95%98%EB%93%9C%EC%BD%94%EB%94%A9%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
새 동영상에 자막을 하드코딩하려고 합니다. 원본 비디오에는 자막 스트림, 즉 총 비디오, 오디오 및 자막(다른 스트림 중에서)이 포함되어 있습니다.
...
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