Workaround for broken(?) m4a files from ffmpeg, was Re: [PATCH] Output AAC as M4A for iTunes with metadata tags

richard richard at richsim900.plus.com
Wed Apr 13 10:27:40 EDT 2011


On Tue Apr 12 Simon Nash wrote:

>> dinkypumpkin wrote:
>>
>> When mp4tags rewrites the MP4 metadata on save, the underlying MP4 
>> library does the arithmetic to calculate the necessary values and 
>> fill in the esds atom.  From perusing the ffmpeg code, it looks like
>> the required logic could be added, but I'm not sure it should be.  I
>> don't think zero is an incorrect value for those fields, plus it 
>> would sort of violate the codec-based model of ffmpeg.
>
> This makes sense, but it doesn't explain why ffmpeg sets the 
> maxBitrate field.  Where does it get the value from?

In order to understand the analysis of the metadata, below are extracts
for the files tested with the Marantz player. 

Bells1_noscript.m4a is the only file that doesn't play. The average
bitrate is zero. The average bitrate in all the other files is non
zero. 

test1.mp4 does not play (as the Marantz does not recognise a .mp4 file),
but change the extension to .m4a and it plays OK.

Bells1_noscript.m4a is downloaded with get_iplayer. Bells1_script.m4a is
the same file fixed up with Jon's script.

Simon can explain what the other files are.

Bells1_noscript.m4a 
type ftyp
majorBrand = M4A 
type esds
decConfigDescr 
bufferSizeDB = 0 (0x000000) <24 bits>
maxBitrate = 143325 (0x00022fdd)
avgBitrate = 0 (0x00000000) 

Bells1_script.m4a
type esds
decConfigDescr
bufferSizeDB = 620 (0x00026c) <24 bits>
maxBitrate = 135328 (0x000210a0)
avgBitrate = 128002 (0x0001f402)

Bells1_noscript_bitrate.m4a
type esds
decConfigDescr 
bufferSizeDB = 0 (0x000000) <24 bits>
maxBitrate = 143325 (0x00022fdd)
avgBitrate = 128002 (0x0001f402)

Bells1_noscript_bitrate_buffer.m4a
type esds
decConfigDescr 
bufferSizeDB = 620 (0x00026c) <24 bits>
maxBitrate = 143325 (0x00022fdd)
avgBitrate = 128002 (0x0001f402)

test1.mp4
type ftyp
majorBrand = mp42
type esds
decConfigDescr 
bufferSizeDB = 1164 (0x00048c) <24 bits>
maxBitrate = 329224 (0x00050608)
avgBitrate = 320110 (0x0004e26e)

test1a.m4a
type ftyp
majorBrand = M4A
type esds
decConfigDescr 
bufferSizeDB = 1164 (0x00048c) <24 bits>
maxBitrate = 329224 (0x00050608)
avgBitrate = 320110 (0x0004e26e)






More information about the get_iplayer mailing list