MP3를 AAC로 변환하는 FFmpeg 명령


21

이 명령을 내릴 수 있습니다.

ffmpeg -i input.mp3 -acodec alac -ab 128k -ar 48000 -ac 2 -y output.m4a 

m4a 파일을 생성합니다.

그러나이 명령을 발행하면

ffmpeg -i input.mp3 -acodec alac -ab 128k -ar 48000 -ac 2 -y output.aac

ffmpeg가 오류를 던지고 있습니다.

출력 파일 # 0에 대한 헤더를 쓸 수 없습니다 (잘못된 코덱 매개 변수?).

또한, m4a 파일의 크기는 원본 파일보다 거의 5.8 배 더 큽니다. 이것은 내가 원했던 것과 AAC로 변환하려는 이유가 아닙니다.

답변:


38

AAC로 변환하려면 어떻게해야합니까?

최고 품질의 AAC FFmpeg를 사용하여 입력을 AAC 오디오로 변환하는 가장 기본적인 FFmpeg 명령입니다. libfdk_aacFraunhofer AAC 인코더이며 FFmpeg를 지원하도록 컴파일 할 때 사용할 수 있습니다.

ffmpeg -i input.mp3 -c:a libfdk_aac output.m4a

품질을 변경하려면 두 가지 옵션이 있습니다.

  • 가변 비트 전송률 (VBR)의 경우 -vbr옵션을 사용하십시오 . 예를 들어, -vbr 4좋은 선택입니다 (스테레오 오디오의 경우 약 128kBit / s). 높을수록 좋습니다. 값의 범위는 1에서 5입니다.

    ffmpeg -i input.mp3 -c:a libfdk_aac -vbr 4 output.m4a
    
  • 고정 비트 전송률 (CBR)의 경우 -b:a옵션을 사용하십시오 (예 :) -b:a 128k. 128 kBit / s는 대부분의 상황에 충분해야합니다. 더 낮은 것을 선택할 수도 있습니다.

    ffmpeg -i input.mp3 -c:a libfdk_aac -b:a 128k output.m4a
    

낮은 비트 전송률에 가장 적합한 기본 AAC-LC (낮은 복잡도) 프로필 대신 HE-AAC (v1 / v2)를 사용할 수도 있습니다.

ffmpeg -i input.mp3 -c:a libfdk_aac -profile:a aac_he_v2 -b:a 32k output.m4a

내가 없으면 어떻게해야 libfdk_aac합니까?

일부 버전의 FFmpeg에는 libfdk_aac라이센스 가 없기 때문에 없습니다 . 이 경우 내장 AAC 인코더를 사용할 수 있습니다.

ffmpeg -i input.mp3 -c:a aac -b:a 192k output.m4a

이 엔코더는 VBR을 올바르게 지원하지 않으므로 해당 또는 HE-AAC가 필요한 경우 계속 읽으십시오.

ffmpeg를 직접 컴파일하고 libfdk_aac지원을 추가 할 수 있습니다 . FFmpeg Wiki에 대한 안내서가 있습니다 . Linux에서는 컴파일이 쉽고, OS X에서는 적당히 쉽고, Windows에서는 어렵다. 컴파일 안내서를 따르고 적절한 라이브러리를 설치하면 FFmpeg는 이제 사용할 수있는 옵션을 제공합니다 libfdk_aac.


원래 접근 방식에 몇 가지 문제가있었습니다.

  • alacAAC가 아닙니다. ALAC는 Apple Lossless Audio Codec 이고 AAC는 Advanced Audio Coding 입니다.

  • 따라서 MP3와 달리 ALAC는 여전히 압축되지만 손실이 없어야하므로 더 많은 데이터를 저장해야하기 때문에 출력이 입력보다 큰 이유입니다.

  • .aacALAC 오디오 용 출력 컨테이너가 아닙니다. AAC를 사용하면 작동합니다. 그래도 MP4 또는 M4A를 사용합니다.


Ubuntu 12.04에서 옵션을 사용할 수 없습니다. -c:a동의어가 있습니까? 나는 그것이 의미 할 수도 -acodec:a있지만 결국에는 그것을 떨어 뜨리고 ffmpeg원하는 출력 파일 이름을 기반으로 코덱을 추론 할 수있었습니다. (필요 -strict experimental하지만, 그리고 던졌다 -map_metadata 0:0. ID3 태그를 보존하는 좋은 측정을위한)
tripleee

또한 주목할 가치가 있습니다. ffmpeg지원하지 않는 M4B 파일 (오디오 북)을 원했지만 M4A로 변환 한 다음 이름 바꾸기가 효과가있는 것 같습니다.
tripleee

@tripleee 즉 ffmpeg, 라는 오래된 프로그램을 사용하고 있지만 실제로는 FFmpeg가 아니라 Libav 포크입니다. 우분투는 불행하게도 "실제"ffmpeg 대신 번들로 묶었습니다. 참조 : ffmpeg, libav 및 avconv의 차이점과 관계를 알려줄 수있는 사람
slhck

@ slhck : 빠른 업데이트 및 링크 주셔서 감사합니다!
tripleee '10

1
@tripleee 아니요, .m4a 파일은 .mp4와 동일하지만 (오디오 만있는 mp4 파일의 명명 규칙 일뿐) .aac (ADTS 스트림이라고 함)와 형식이 다릅니다. 을 추가하여 FFmpeg가 ADTS 형식으로 출력되도록 할 수도 있습니다 -f adts.
Bigue Nique

4

Zeranoe Windows 빌드 용 AAC로 쉽게 변환

ffmpeg -i input.mp3 -c:a aac -b:a 128k output.m4a

libfaac 또는 libfdk_aac 대신 "aac"를 사용하십시오. https://trac.ffmpeg.org/wiki/Encode/AAC

"FFmpeg는 3 개의 AAC-LC 인코더 (aac, libfaac, libfdk_aac) 및 1 개의 HE-AAC (v1 / 2) 인코더 (libfdk_aac)를 지원할 수 있습니다. libfaac 및 libfdk_aac의 라이센스는 GPL과 호환되지 않으므로 GPL은 허용하지 않습니다. GPL 라이센스 코드도 포함 된 경우 이러한 라이센스에 따라 라이센스가 부여 된 코드가 포함 된 바이너리 배포. "


2
libfaac지원도 3.2에서 제거되었습니다.
slhck
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.