비디오 파일의 오디오 스트림을 여러 개의 오디오 스트림으로 바꾸는 방법은 무엇입니까?


19

두 개의 오디오 스트림이있는 비디오 파일에서 두 번째 오디오 스트림 (0 : 2)을 바꾸고 가능한 경우 레이블을 지정하고 싶습니다. 나는 이것에 대해 어떻게 갈 것인가? 내가 찾은 모든 ffmpeg 명령을 사용하면 두 번째 오디오 스트림을 유지할 수 없습니다.

답변:


22

스트림을 선택 하려면이 -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:v0는 첫 번째 입력을 나타냅니다 video.mkv. v수단 "을 선택 비디오 스트림 유형".

  • 0:a:00는 첫 번째 입력을 나타냅니다 video.mkv. a수단 "오디오 스트림 유형을 선택합니다." 마지막 0은이 입력에서 첫 번째 오디오 스트림을 나타냅니다. 사용하는 경우 0:a모든 비디오 스트림이 매핑됩니다.

  • 1:a1는 두 번째 입력을 나타냅니다 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필터 가 사용되므로이 예에서는 오디오를 스트림 복사 할 수 없습니다.

나를 위해 전혀 작동하지 않았습니다.
Rudolf Olah

@omouse "작동하지 않았습니다"는 도움을주기가 어렵습니다. 페이스트 빈 링크를 사용하여 명령과 완전한 콘솔 출력을 표시해야합니다.
llogan

내 문제는입니다. -codec copy하지만 다른 버전의 ffmpeg와 수정했습니다. 다른 문제는와 관련 -map하여 잘못된 스트림 수에 대해 불평했습니다.
Rudolf Olah

1
방금 사용했습니다 -map 0:v -map 1:a. 나는 이것이 첫 번째 파일 (video.mkv)에서 비디오를 가져온 다음 두 번째 파일 (audio.mp4)에서 오디오를 가져 와서 output.mkv를 만드는 것을 의미한다고 가정합니다 -map 0:a:0. 나는 그것을 배제하고 원하는 결과를 얻습니다.
일요일

2
@ aaronk6 원래 질문은 여러 오디오 스트림 을 출력 에 매핑하는 방법을 요청했습니다 . 이 예는 첫 번째 입력에서 첫 번째 오디오 스트림을 가져오고 두 번째 입력에서 오디오 스트림을 가져와 출력에 매핑합니다. 일부는 예제가 단일 오디오 스트림으로 출력을 생성 한 다음 혼동 한다고 가정합니다 .
llogan
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.