
저는 FFmpeg에 대해 잘 알지도 못하고, 직접 여러번 시도해 보았지만 구문조차 파악하지 못했습니다.. 그래서 저보다 훨씬 똑똑한 사람들에게 대외적으로 물어보겠습니다. FFmpeg를 사용하여 영어가 아닌 모든 옵션을 제거한 후 삭제하고 싶습니다.
그 후 첫 번째 색인된 항목을 제외한 모든 영어 옵션을 삭제합니다. 나는 무엇을 시도해도 그것을 알 수 없었고 약 3시간 동안 벽에 머리를 부딪혔습니다. 마지막 시도는 다음과 같습니다.
ffmpeg -i "Episode 01 - Yaha-kui zaShunina.mkv" -map 0:v -map 0:s -map 0:m:language:eng -map:0:a:1? -codec copy "copy Episode 01 - Yaha-kui zaShunina.mkv"
이것은 내가 올바른 구문을 얻은 유일한 것이었고 여전히 제대로 작동하지 않았습니다. 나보다 똑똑한 사람이 도와줄 수 있나요? 또한 모든 비디오를 보존하고 번인(burnt-in)보다는 소프트 서브(soft sub)인지 확인하고 싶습니다.
답변1
구문은 다음과 같습니다 -map 0:s:m:language:eng
.
ffmpeg -y -i "Episode 01 - Yaha-kui zaShunina.mkv" -map 0:v -map 0:a? -map 0:s:m:language:eng -codec copy "copy Episode 01 - Yaha-kui zaShunina.mkv"
문제는 첫 번째 스트림뿐만 아니라 모든 영어 자막을 매핑한다는 것입니다. 다음을 사용하여 첫 번째 영어 자막 스트림만 유지하기 위해 FFmpeg를 두 번째로 실행할 수 있습니다 -map 0:s:0
.
ffmpeg -y -i "Episode 01 - Yaha-kui zaShunina.mkv" -map 0:v -map 0:a? -map 0:s:0 -codec copy "copy copy Episode 01 - Yaha-kui zaShunina.mkv"
(하나의 명령으로 첫 번째 영어 스트림만 유지하는 것이 가능한지 모르겠습니다).
다음과 같은우편는 영어 오디오 스트림을 매핑하기 위한 구문이 임을 보여줍니다 -map 0:a:m:language:eng
.
0:a
오디오 스트림을 나타냅니다. 자막 스트림을 참조하기 위해
로 대체할 수 있습니다 .0:s
테스트:
여러 비디오, 오디오 및 자막 스트림이 포함된 합성 비디오 파일 만들기(테스트용):
ffmpeg -y -f lavfi -i testsrc=size=384x206:rate=1 -f lavfi -i sine=frequency=300 -f lavfi -i sine=frequency=400 -f lavfi -i sine=frequency=500 -i in.srt -i in.srt -i in.srt -i in.srt -i in.srt -map:v 0 -map:a 1 -map:a 2 -map:a 3 -map:s 4 -map:s 5 -map:s 6 -map:s 7 -map:s 8 -c:v libx264 -c:a:0 ac3 -ar:0 44100 -c:a:1 ac3 -ar:1 44100 -strict -2 -c:a:2 dca -ar:2 44100 -c:s ass -metadata:s:a:0 language=fra -metadata:s:a:1 language=ger -metadata:s:a:2 language=eng -metadata:s:s:0 language=fra -metadata:s:s:1 language=ger -metadata:s:s:2 language=ger -metadata:s:s:3 language=ger -metadata:s:s:4 language=eng -t 10 input.mkv
내용 in.srt
(테스트에 사용됨):
1
00:00:00,0 --> 00:00:01,0
Sec 0 to 1
2
00:00:01,0 --> 00:00:02,0
Sec 1 to 2
3
00:00:02,0 --> 00:00:03,0
Sec 2 to 3
4
00:00:03,0 --> 00:00:04,0
Sec 3 to 4
input.mkv
MediaInfo 도구 사용 스트림 확인 :
Video
ID : 1
Format : AVC
...
Audio #1
ID : 2
Language : French
...
Audio #2
ID : 3
Language : German
...
Audio #3
ID : 4
Language : English
...
Text #1
ID : 5
Language : French
...
Text #2
ID : 6
Language : German
...
Text #3
Language : English
...
Text #4
Language : German
...
Text #5
ID : 9
Language : English
영어 자막만 유지하는 명령 실행:
ffmpeg -y -i input.mkv -map 0:v -map 0:a? -map 0:s:m:language:eng -codec copy tmp_output.mkv
MediaInfo를 사용하면 tmp_output.mkv
두 개의 영어 자막이 있음을 알 수 있습니다.
다음을 사용하여 FFmpeg를 한 번 더 실행하십시오 -map 0:s:0
.
ffmpeg -y -i tmp_output.mkv -map 0:v -map 0:a? -map 0:s:0 -codec copy output.mkv
MediaInfo 도구를 사용하여 output.mkv 스트림을 확인하면 영어 자막 스트림이 하나만 표시됩니다.
Text
ID : 5
Language : English
Default : Yes
Forced : No