답변:
스트림을 선택 하려면이 -map
옵션 을 사용하십시오 . 기본 스트림 선택 은 각 스트림 유형 중 하나만 선택하므로 -map
사용해야합니다.
ffmpeg -i video.mkv -i audio.mp3 -map 0:v -map 0:a:0 -map 1:a \
-metadata:s:a:0 language=eng -metadata:s:a:1 language=sme -codec copy \
-shortest output.mkv
0:v
– 0
는 첫 번째 입력을 나타냅니다 video.mkv
. v
수단 "을 선택 비디오 스트림 유형".
0:a:0
– 0
는 첫 번째 입력을 나타냅니다 video.mkv
. a
수단 "오디오 스트림 유형을 선택합니다." 마지막 0
은이 입력에서 첫 번째 오디오 스트림을 나타냅니다. 사용하는 경우 0:a
모든 비디오 스트림이 매핑됩니다.
1:a
– 1
는 두 번째 입력을 나타냅니다 audio.mp3
. a
수단 "오디오 스트림 유형을 선택합니다."
-codec copy
것이다 복사 스트리밍 대신 인코딩의 (재-MUX)를. 특정 오디오 코덱이 필요한 경우 -c:v copy
(비디오를 유지하기 위해) 지정한 다음 예를 들어 -c:a libmp3lame
오디오 스트림을 MP3로 다시 인코딩해야합니다.
-shortest
가장 짧은 입력이 끝나면 출력을 종료합니다.
ffmpeg -i vid.mkv -i aud.mp3 -filter_complex "[0:a][1:a]amerge=inputs=2[a]" \
-map 0:v -map "[a]" -c:v copy -c:a aac -strict experimental -b:a 192k -ac 2 \
-shortest out.mp4
amerge
필터 가 사용되므로이 예에서는 오디오를 스트림 복사 할 수 없습니다.-codec copy
하지만 다른 버전의 ffmpeg와 수정했습니다. 다른 문제는와 관련 -map
하여 잘못된 스트림 수에 대해 불평했습니다.
-map 0:v -map 1:a
. 나는 이것이 첫 번째 파일 (video.mkv)에서 비디오를 가져온 다음 두 번째 파일 (audio.mp4)에서 오디오를 가져 와서 output.mkv를 만드는 것을 의미한다고 가정합니다 -map 0:a:0
. 나는 그것을 배제하고 원하는 결과를 얻습니다.