[FFmpeg-user] Preserving AAC LC status when converting to fragmented MP4

Tobias Rapp t.rapp at noa-archive.com
Wed May 19 13:17:38 EEST 2021


On 14.05.2021 15:31, Simon Brown wrote:
> [...] 
> 
> For although there it says aac (LC) if I run mp4info on the resultant file
> I get this:
> 
> [...]
> 
> Track 2:
>    flags:        3 ENABLED IN-MOVIE
>    id:           2
>    type:         Audio
>    duration: 0 ms
>    language: und
>    media:
>      sample count: 0
>      timescale:    48000
>      duration:     0 (media timescale units)
>      duration:     0 (ms)
>      bitrate (computed): 125.373 Kbps
>      sample count with fragments: 848
>      duration with fragments:     868354
>      duration with fragments:     18091 (ms)
>    Sample Description 0
>      Coding:      mp4a (MPEG-4 Audio)
>      Stream Type: Audio
>      Object Type: MPEG-4 Audio
>      Max Bitrate: 128250
>      Avg Bitrate: 0
>      Buffer Size: 0
>      Codecs String: mp4a.40.0
>      MPEG-4 Audio Object Type: 0 (UNKNOWN)
>      Sample Rate: 48000
>      Sample Size: 16
>      Channels:    2
> 
> whereas if I used -c:a aac -profile:a aac_low instead of -c:a copy then I
> get this from mp4info:
> Track 2:
>    flags:        3 ENABLED IN-MOVIE
>    id:           2
>    type:         Audio
>    duration: 0 ms
>    language: und
>    media:
>      sample count: 0
>      timescale:    48000
>      duration:     0 (media timescale units)
>      duration:     0 (ms)
>      bitrate (computed): 49.589 Kbps
>      sample count with fragments: 849
>      duration with fragments:     869378
>      duration with fragments:     18112 (ms)
>    Sample Description 0
>      Coding:      mp4a (MPEG-4 Audio)
>      Stream Type: Audio
>      Object Type: MPEG-4 Audio
>      Max Bitrate: 128000
>      Avg Bitrate: 0
>      Buffer Size: 0
>      Codecs String: mp4a.40.2
>      MPEG-4 Audio Object Type: 2 (AAC Low Complexity)
>      MPEG-4 Audio Decoder Config:
>        Sampling Frequency: 48000
>        Channels: 2
>        Extension:
>          Object Type: Spectral Band Replication
>          SBR Present: no
>          PS Present:  no
>          Sampling Frequency: 0
>      Sample Rate: 48000
>      Sample Size: 16
>      Channels:    2
> 
> where it clearly states it as Mpeg-4 Audio AAC Low complexity.

Looks like the data that should be found in the "esds" atom is missing 
or incomplete when using -c:a copy. See this link for details on how AAC 
profile information is stored in MP4:

https://stackoverflow.com/questions/3987850/mp4-atom-how-to-discriminate-the-audio-codec-is-it-aac-or-mp3

Don't know enough about TS (de)muxing, though, to find out where this 
profile data should be parsed out from the input by FFmpeg.

Regards,
Tobias



More information about the ffmpeg-user mailing list