MKV (Matroska) 파일에서 불필요한 오디오 스트림을 제거하려고했습니다. 내가 원하는 이유는 Windows Media Player에서 원하는 스트림을 수동으로 선택하지 않아도되기 때문입니다.
입력 파일은 다음과 같은 ffmpeg 정보를 제공합니다.
Stream #0.0: Video: mpeg4, yuv420p, 704x396 [PAR 1:1 DAR 16:9], 29.98 tbr, 1k tbn, 29.98 tbc
Stream #0.1(eng): Audio: aac, 24000 Hz, 5.1, s16
Stream #0.2(jpn): Audio: aac, 24000 Hz, 5.1, s16
Stream #0.3(eng): Subtitle: 0x0000
Stream #0.4(eng): Subtitle: 0x0000
Stream #0.5: Attachment: 0x0000
Stream #0.6: Attachment: 0x0000
스트림 0, 1 및 3 (하위)을 원하므로 ffmpeg 명령은 다음과 같습니다.
ffmpeg -i input.mkv -map 0:0 -map 0:1 -map 0:3 -vcodec copy -acodec libmp3lame -newsubtitle test.mkv
이상하게도 오류가 발생합니다.
At least one output file must be specified
자막 제거 :
ffmpeg -i input.mkv -map 0:0 -map 0:1 -vcodec copy -acodec libmp3lame test.mkv
나에게 이것을 준다 :
Number of stream maps must match number of output streams
“지도”옵션이 어떻게 작동하는지 이해하지 못하는 것 같습니다. 누군가 나를 알아낼 수 있도록 도와 줄까요?
답변
다시 인코딩하지 않고 스트림을 제거하기 만하면 MKVtoolnix 패키지를 사용하여이 작업을 수행 할 수 있습니다 ( videohelp.com 페이지 참조 ).
도움이 될만한 몇 가지 GUI가 있습니다 (videohelp 링크에서 확인하십시오). 정확한 mkvmerge
명령 줄이 무엇인지 확실하지 않지만 다음과 같이 작동한다고 생각합니다.
# first, get audio track info so we know which one to keep
mkvmerge -i input.mkv
File 'input.mkv': container: Matroska
Track ID 1: video (V_MPEG4/ISO/AVC)
Track ID 2: audio (A_AAC)
Track ID 3: audio (A_AAC) <----------- for example, let's keep this one
Track ID 4: audio (A_AAC)
mkvmerge -o output.mkv --atracks 3 input.mkv
즉 해야 트릭을 (미안, 테스트를위한 편리한 파일이없는) 않습니다. 이 --atracks
옵션은 나열된 오디오 트랙 만 새 파일 mkvmerge
로 복사하도록 지시 합니다. 4가 아닌 2 & 3을 유지하려면을 사용할 수 있습니다 .--atracks 2,3
mkvmerge
제목 설정, 오디오 동기화 지연 추가 등을위한 기타 옵션이 많이 있으므로 자세한 내용 은 맨 페이지 를 확인 하십시오.
답변
-f
지정된 형식을 강제로 시도하십시오 .
ffmpeg -i input.mkv -map 0 : 0 -map 0 : 1 -map 0 : 3 -vcodec copy -acodec libmp3lame -newsubtitle -f mkv test.mkv
답변
여기에는 두 가지 별도의 문제가 있습니다.
-
첫 번째 명령 행에서 매개 변수 순서가 잘못되었을 수 있습니다.
-newaudio
출력 파일 이름 다음에 스위치가 끝에 있어야 한다고 생각합니다 . -
두 번째 명령 줄인 “자막 제거”는 입력 파일에 자막이 있으므로
-sn
스위치를 사용하여 자막 을 제거해야합니다. 그렇지 않으면 FFmpeg가-map
목록에 지정된 것을 하나 이상 원하는 것 같습니다 .
답변
첫 번째 명령에서 test.mkv가 출력 파일임을 지정하지 않았습니다. 해당 부분을 변경 ... -c copy test.mkv
하거나 코덱을 지정 해야하는 것처럼 보입니다 ... -c:s copy test.mkv
.
그리고 그 -newsubtitle
깃발이 거기서 무엇을 하고 있는지 확실하지 않습니다 . 그러나 추가하려는 자막 파일이 있으면 다른 입력 플래그를 수행 할 수 있어야합니다 -i input.srt
. 이 링크 를 참조하십시오 .
두 번째 명령에서는 비디오 스트림을 매핑하고 복사하려고하는 것 같습니다. 따라서 -vcodec copy
지침을 제거하려고 시도하면 작동합니다. 🙂