
약 100개의 동영상(시리즈의 에피소드)이 두 번 있습니다.
- [avi] 내가 선호하는 오디오 트랙이 포함된 720p 비디오 해상도
- [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 배치 파일 루프에서 명령을 실행하는 방법에 대한 많은 예제를 온라인에서 찾을 수 있습니다.