2017-02-23 1 views
2

FFmpeg로 인코딩 할 때 문제가 있습니다. aac 오디오가있는 au mp4 파일이 있습니다. 나는 ffmpeg로 오디오를 복사하려고 시도했다. 소스 mp4 파일에서 첫 번째 오디오 노이즈가 0.30 초에 나타납니다. ffmpeg -i inputfile.mp4 -c:a copy outputfile.aac을 사용하여 변환 한 후 결과 파일이 잘못되어 첫 번째 오디오 노이즈가 0.32 초에 나타납니다. 파일의 지속 시간도 동일하지 않습니다.ffmpeg AAC에서 변환 후 오디오 파일이 잘못되었습니다.

인코더를 강제로 libfaac으로 설정하면 작동하지만 파일이 너무 큽니다.

그렇다면 기본 인코더 (aac, libfdk_aac)를 사용할 때 왜 작동하지 않습니까? 대담에서 변환 할 때도 똑같이 나타납니다.

고마워요

답변

3

첫 프레임을 디코딩하기 위해 디코더가 필요로하는 오디오 스트림에 패딩 프레임이있다. 이것은 AAC와 같은 MDCT 오디오 코덱의 기술적 요구 사항입니다. MP4/MKV와 같은 시간이 지정된 샘플 컨테이너에서 첫 번째 프레임에는 음수의 프레젠테이션 타임 스탬프가 있습니다. 원시 AAC 비트 스트림에서 첫 번째 프레임은 순수하게 디코딩됩니다. 각 프레임에는 1024 개의 샘플이 있으므로 21-23ms의 지속 시간을 갖습니다. 타이밍의 차이는 오프셋 때문입니다. 이것을 피하려면 M4A와 같은 컨테이너로 다시 포장하십시오. 배경 용

, Apple에서 :

AAC 올바르게 인코딩 및 인코딩 알고리즘의 특성으로 인해 오디오 샘플들을 디코딩 하기 위해 소스 오디오 PCM 샘플 이후의 데이터를 필요로한다. AAC 인코딩은 연속적으로 개의 2048 오디오 샘플 세트를 통해 변환을 사용하며 1024 개의 오디오 샘플마다 (중복)을 적용합니다. 올바른 오디오를 디코딩하려면 1024 샘플의 오디오 샘플 에 대한 두 가지 변환이 모두 필요합니다. 이러한 이유로 엔코더는 첫 번째 'true'오디오 샘플 인 앞에 적어도 1024 개의 무음 샘플을 추가하고 더 자주 추가합니다. 이것은 다양한 "프라이밍", "프라이밍 샘플"또는 "인코더 지연"이라고합니다.

인코더 지연과 나머지 샘플을 명시 적 표현의 부족은 AAC 인코딩에 고유 한 문제가되지 않습니다. MPEG-4 및 ADTS/MPEG-2 비트 스트림 및 파일 컨테이너의 경우 엔코더 지연 또는 나머지 샘플에 대한 만족스러운 명시 적 표현이 여전히 존재하지 않습니다. MP3는 또한 AC-3 및 기타와 같은 독점 코덱과 마찬가지로 비트 스트림이 의 데이터 종속성과 지연을 가지고 있습니다.

관련 문제