설치 · 사용법

FFmpeg 오디오 트랙 추출 — AAC를 M4A로 저장·확인

한줄 요약

입력의 오디오가 AAC인지 ffprobe로 확인하고, 필요한 오디오 순번을 -map 0:a:N으로 지정한 뒤 -c:a copy로 새 M4A에 저장합니다. 아래 예제의 0:a:1은 두 번째 오디오입니다. 파일 생성만으로 끝내지 말고 출력 오디오 1개·코덱·길이·실제 소리를 확인하세요.

1. 선택·완료 조건

입력 조건
선택할 오디오가 AAC인 로컬 파일
출력
선택한 한 트랙을 담은 새 M4A
번호
0:a:0 첫 오디오 / 0:a:1 두 번째
원본 보호
다른 출력 이름과 -n
확인
트랙·AAC·길이·재생·디코딩
예제 환경
Windows PowerShell · FFmpeg/ffprobe 9.0.2

2. 트랙 저장·확인 순서

  1. 1. AAC와 트랙 번호 확인

    실행용 FFmpeg·ffprobe를 준비하고 입력 사본의 스트림 정보를 확인합니다. AAC가 아니거나 필요한 오디오를 구분할 수 없으면 아래 복사 명령을 그대로 진행하지 마세요.

  2. 2. 오디오 순번 선택

    전체 stream index와 오디오만 센 순번을 구분합니다. 두 번째 오디오라면 0:a:1, 첫 번째라면 0:a:0입니다. 언어 태그와 실제 소리를 함께 확인하세요.

  3. 3. 새 M4A로 복사

    -map으로 하나를 지정하고 -c:a copy로 저장합니다. 입력과 다른 이름을 사용하며 -n으로 기존 출력 덮어쓰기를 막습니다.

  4. 4. 파일 정보와 내용 확인

    출력의 오디오가 1개인지, AAC인지, 길이가 의도한 입력과 맞는지 확인합니다. 실제로 재생하고 전체 디코딩 명령의 오류도 살펴보세요.

  5. 5. 실패하면 조건 재확인

    출력 충돌·없는 오디오 번호·오디오 트랙 없음·컨테이너 불일치는 아래 표에서 확인합니다. 종료 코드나 파일 이름만 보고 성공으로 판단하지 않습니다.

3. 이 절차를 사용할 파일

이미 FFmpeg의 스트림 복사를 선택했고, 로컬 영상에 있는 AAC 오디오 중 하나만 M4A로 보관하려는 경우를 다룹니다. 전체 영상의 컨테이너를 바꾸는 MKV→MP4 리먹스, 녹화 전에 입력을 나누는 OBS 오디오 트랙 설정과는 결과가 다릅니다.

MP3 파일이 목적이고 설치 없이 처리하려면 MP4→MP3 웹도구를 비교할 수 있습니다. 확인한 도구는 최대 500MB의 지원 영상을 브라우저 안에서 MP3로 변환합니다. AAC를 재인코딩 없이 M4A에 옮기는 작업은 아니며, 큰 파일·반복 작업·기기 메모리와 원하는 출력 형식에 따라 선택하세요. 다른 GUI 경로는 기존 MP4→MP3 가이드에서 확인합니다.

섞인 소리를 나누는 기능은 아님

한 오디오 트랙에 목소리와 배경음이 이미 섞여 있으면 이 명령으로 둘을 분리할 수 없습니다. 기존에 서로 다른 트랙으로 저장된 오디오 중 하나를 선택하는 절차입니다.

4. 코덱과 번호 확인

Windows 실행용 배포의 bin 폴더에서 PowerShell을 열고 .\ffmpeg.exe -version과 .\ffprobe.exe -version으로 도구를 확인합니다. 배포판 선택은 FFmpeg 프로그램 페이지의 안내를 따르세요. PATH 수정이나 관리자 실행은 필수 단계가 아닙니다. 아래 파일 이름은 예시이므로 실제 입력의 이름·경로로 바꿉니다.

.\ffprobe.exe -v error -show_entries stream=index,codec_type,codec_name:stream_tags=language:format=duration -of json ".\검수 입력.mkv"

codec_type이 audio이고 codec_name이 aac인 항목을 찾습니다. JSON의 index는 영상·자막까지 포함한 전체 스트림 번호입니다. 0:a:N의 N은 오디오만 센 0부터 시작하는 순번이므로 index 값을 그대로 넣지 마세요.

영상 하나와 AAC 오디오 두 개가 있는 예시의 번호 차이
예시 항목 선택 번호
index 0 · video 이 가이드에서 제외
index 1 · 첫 audio AAC 0:a:0 또는 전체 번호 0:1
index 2 · 두 번째 audio AAC 0:a:1 또는 전체 번호 0:2

이 번호 배치는 예시입니다. 자기 파일의 stream 순서를 확인하세요. language 태그는 없거나 잘못 기록될 수 있으므로 kor·eng 표시만으로 실제 언어를 단정하지 말고 원래 파일을 재생해 필요한 트랙을 고릅니다.

5. 한 트랙을 M4A로 저장

아래 명령은 두 번째 오디오가 AAC인 입력을 대상으로 합니다. 0은 첫 입력, a는 오디오, 마지막 1은 두 번째 오디오를 뜻합니다. 첫 번째가 필요하면 0:a:0으로 바꾸세요.

.\ffmpeg.exe -hide_banner -nostdin -n -i ".\검수 입력.mkv" -map 0:a:1 -c:a copy ".\선택한 AAC.m4a"

-map이 지정한 트랙만 고르고 -c:a copy는 압축된 음성을 다시 인코딩하지 않고 옮깁니다. 출력 컨테이너가 코덱을 담을 수 있어야 합니다. 이 명령에서 볼륨·필터를 함께 적용하거나 출력 확장자만 MP3로 바꾸지 마세요.

원본과 기존 출력 보호

입력과 다른 출력 이름을 쓰세요. -n은 같은 이름의 기존 출력 덮어쓰기를 거부합니다. 충돌하면 기존 파일을 보존하고 새 이름을 정합니다. -y로 거부를 무시하는 것을 기본 절차로 삼지 않습니다.

6. 완료 여부 확인

먼저 출력의 스트림과 길이를 읽습니다. 아래 정보에서 audio 1개와 aac 코덱을 확인하고 영상·다른 오디오가 들어 있지 않은지 살펴보세요.

.\ffprobe.exe -v error -show_entries stream=index,codec_type,codec_name:stream_tags=language:format=duration -of json ".\선택한 AAC.m4a"

길이는 입력의 필요한 트랙과 비교하고, 시작·중간·끝을 실제로 재생해 올바른 소리와 잘림 여부를 확인합니다. 컨테이너의 길이 표시에는 작은 차이가 생길 수 있지만 큰 차이·누락을 정상으로 넘기지 마세요. 언어 태그나 파일 크기만으로 내용이 맞다고 판단할 수 없습니다.

다음 명령은 파일 전체의 오디오를 디코딩해 오류를 확인하며 새 파일을 저장하지 않습니다. 표시되는 디코딩 오류를 살펴보세요. 오류가 없다는 사실이 원하는 언어·내용을 선택했다는 확인까지 대신하지는 않습니다.

.\ffmpeg.exe -hide_banner -nostdin -i ".\선택한 AAC.m4a" -map 0:a:0 -f null -

직접 확인한 범위

Windows FFmpeg/ffprobe 9.0.2에서 자체 5초 영상과 서로 다른 가상 AAC 톤 두 개로 시험했습니다. 두 번째 트랙의 입력·출력 217개 packet payload SHA256이 모두 같았고 M4A의 오디오 1개·AAC·전체 디코딩·원본 해시 보존을 확인했습니다. 길이 차이는 약 0.022초였으며 모든 파일의 허용 오차로 일반화하지 않습니다. 실제 한국어·영어 음성이나 모든 코덱·기기의 재생을 시험한 결과는 아닙니다.

7. 실패 조건과 다음 행동

AAC 트랙 저장 실패의 확인과 대응
관찰 확인·대응
already exists · Exiting 기존 출력이 있습니다. 파일을 보존하고 다른 이름을 지정합니다.
matches no streams 오디오 순번 또는 전체 index가 잘못됐는지 확인합니다. 오디오 자체가 없는 입력에서도 발생합니다.
AAC를 MP3로 copy할 때 오류 컨테이너와 코덱이 맞지 않습니다. AAC 보관은 이 M4A 경로, MP3가 목적이면 별도의 재인코딩 경로를 선택합니다.
출력 없음·0바이트·검사 실패 로그와 입력·출력 경로를 확인합니다. 기존 파일이 그대로 남은 것을 새 출력 성공으로 오인하지 마세요.

이번 Windows 빌드에서는 출력 충돌이나 잘못된 작업의 오류 메시지에도 종료 코드 0이 나온 경우가 있었습니다. 종료 코드 하나로 성공을 판단하지 말고 실제 진단 메시지·출력 유무·스트림 정보·재생/디코딩을 함께 확인하세요. 다른 빌드의 종료 동작이 모두 같다고 가정하지 않습니다.

AAC가 아닌 오디오라면 이 예제를 그대로 적용하지 말고 코덱과 출력 컨테이너를 다시 선택하세요. MP3가 필요하면 MP4→MP3 변환 경로, 음량 필터가 필요하면 FFmpeg loudnorm 측정·출력을 비교합니다. 음성을 다시 처리하는 작업은 스트림 복사와 구분합니다.

8. 자주 묻는 질문

0:a:1은 JSON index 1과 같은가요?

+

항상 같지는 않습니다. 0:a:1은 첫 입력의 두 번째 오디오입니다. JSON index는 영상·자막까지 센 전체 번호입니다. 예시에서 두 번째 오디오의 index가 2이면 전체 번호 선택은 0:2가 됩니다.

-c:a copy인데 M4A의 파일 해시가 원본 영상과 달라도 되나요?

+

원본 영상과 M4A는 컨테이너·포함 스트림이 달라 전체 파일 SHA256이 같을 필요가 없습니다. 여기서 직접 시험한 동일성은 선택한 AAC packet payload입니다. 파일 해시 비교만으로 오디오 선택·재생 결과를 대신하지 마세요.

MP3 확장자로 바꾸면 MP3가 되나요?

+

AAC를 그대로 복사한 데이터를 MP3 컨테이너에 넣는 것은 이 절차가 아닙니다. MP3 출력은 코덱을 바꾸는 별도 변환 경로를 사용하고 결과를 확인하세요.

언어 태그가 eng이면 영어 트랙이 맞나요?

+

태그가 비어 있거나 잘못 기록될 수 있습니다. 실제로 재생해서 필요한 내용을 고르고 출력도 확인해야 합니다.

파일이 생기고 종료 코드가 0이면 성공인가요?

+

그것만으로는 부족합니다. 출력 오디오 1개·AAC·길이·올바른 소리와 디코딩 오류를 확인하세요. 이번 시험에서는 일부 실패에도 종료 코드 0이 나와 진단과 실제 파일을 함께 검사했습니다.

9. 참고 자료

관련 가이드

함께 보면 좋은