Participating Frequently
September 11, 2023
AAC audio priming is not declared as expected in MP4 export (H264 output module)
- September 11, 2023
- 3 replies
- 952 views
Issue
When exporting MP4 with audio from AE (H264 output module, with video stream or without), AAC audio priming information is not contained in the MP4 container in the expected format (expected formats are either ISO standard [elst + sbgp + sgpd] or iTunSMPB). Consequence is that (as far as I know) no app other than AE itself reads that MP4 correctly - to everyone else audio has ~20ms silence in the begining and lasts longer than expected. If video exists, audio and video are offset by that amount (as audio has extra silence at the beginning). The most important app that reads MP4 incorectly is ffmpeg, as it is used pretty much everywhere. On top of the everything, even the AE itself provides invalid information on the duration of the audio it rendered itself - it states 10.06933333 for 10.0333333 duration audio (priming samples seems to be a part of that duration [remainder ones as well, but that is expected]).
AE 2023 and AE 2024 beta are both importing mp4 with correct audio priming declaration as expected - which is great - it should output MP4 with correct declaration as well.
Attached are all the needed info for debugging this issue, original audio in wav format, rendered audio from AE in mp4 format, and ok (expected) audio in mp4 format. Attached as well, is the way audio is read in AE and in audacity.
Adobe After Effects version number
23.6.0 (and beta 24.0.0 build 44)
Operating system
Microsoft Windows 11 Pro, 10.0.22621 N/A Build 22621
Steps to reproduce
Import original audio in blank AE project and render it out with H264 output module (with or without audio) - you should get the same file as provided render.mp4. If you pass that through ffmpeg (for example, do ffmpeg -i render.mp4 out.wav) you will see it has silence at the start.
Expected result
MP4 container should have AAC audio priming declared in expected format (ok.mp4).
Actual result
MP4 container does not have AAC audio priming declared in the expected format (render.mp4).
