avi에서 mp4까지 오디오 트랙을 효율적으로 결합

avi에서 mp4까지 오디오 트랙을 효율적으로 결합

약 100개의 동영상(시리즈의 에피소드)이 두 번 있습니다.

  1. [avi] 내가 선호하는 오디오 트랙이 포함된 720p 비디오 해상도
  2. [mp4] 1080p인데 언어가 잘못됐네요

분명히 갖고 싶다.내가 선호하는 언어로 된 좋은 비디오. 그러나 가능하다면 두 가지 오디오 옵션을 모두 유지하고 싶습니다.

mp4 결합기(mp4box용 GUI)를 사용하여 수동으로 결합하려고 시도했지만 시간이 오래 걸립니다. 해당 프로세스를 자동화하고 최적화하기 위한 몇 가지 제안을 보고 싶습니다.

답변1

당신은 이것을 매우 쉽게 할 수 있습니다ffmpeg(정적 빌드 다운로드) 다음과 같습니다:

ffmpeg -i input.mp4 -i input.avi -c copy -map 0:v:0 -map 1:a output.mp4

이것은지도다음은 출력 파일로 스트리밍됩니다.

  • 첫 번째 입력의 첫 번째 비디오 채널( 0:v:0)
  • 두 번째 입력의 오디오 채널( 1:a) – 첫 번째 입력만 원하는 경우 1:a:0등을 사용합니다.

비디오 및 오디오 스트림이 복사되므로 이 프로세스가 빠릅니다.

호환되지 않는 오디오

AVI 파일이 오디오 스트림으로 MP3를 사용하는 경우 MP4 파일로 매핑할 수 없습니다. 이 경우 다음을 사용하십시오.

ffmpeg -i input.mp4 -i input.avi -c:v copy -c:a aac -b:a 192k -map 0:v:0 -map 1:a output.mp4

이렇게 하면 192kBit/s의 AAC를 사용하여 오디오 스트림이 다시 인코딩됩니다. 이는 다시 인코딩으로 인한 아티팩트를 발견하지 못할 만큼 충분히 높은 품질이어야 합니다.

또는 MKV를 거의 모든 코덱을 지원하는 출력 컨테이너로 사용할 수 있습니다.

ffmpeg -i input.mp4 -i input.avi -c copy -map 0:v:0 -map 1:a output.mkv

일괄 실행하는 방법

MP4와 AVI 파일의 기본 이름이 동일하고 한 번만 실행한다는 가정 하에 Bash를 사용하는 Linux 등 모든 파일에서 이 명령을 루프에서 실행할 수 있습니다(그렇지 않으면 다음을 시도합니다). 출력 파일도 변환합니다):

for f in *.mp4; do
    aviFile="${f%%.mp4}.avi" # replace the extension
    outputFile="${f%%.mp4}-output.mp4" # create output filename
    ffmpeg -i "$f" -i "$aviFile" -c copy -map 0:v:0 -map 1:a "$outputFile"
done

Windows 배치 파일 루프에서 명령을 실행하는 방법에 대한 많은 예제를 온라인에서 찾을 수 있습니다.

관련 정보