ISO MPEG-4

From MultimediaWiki
(Redirected from MPEG-4)
Jump to: navigation, search

MPEG-4 part 2 video. Different encoders use different FourCCs to identify MPEG-4 content in AVI files, with DIVX, XVID, DX50, and FMP4 being most common. Strictly speaking, some of these FourCCs should refer only to simple profile rather than advanced simple profile, but this can not be relied upon.

This does not include H.264 video (MPEG-4 part 10).


In particular, specifically for FMP4 fourcc, accordingly with MPlayer FAQ :

Q: Why do third-party players fail to play MPEG-4 movies encoded by MEncoder versions later than 1.0pre7?

A: libavcodec, the native MPEG-4 encoding library usually shipped with MEncoder, used to set the FourCC to 'DIVX' when encoding MPEG-4 videos (the FourCC is an AVI tag to identify the software used to encode and the intended software to use for decoding the video). This led many people to think that libavcodec was a DivX encoding library, when in fact it is a completely different MPEG-4 encoding library which implements the MPEG-4 standard much better than DivX does. Therefore, the new default FourCC used by libavcodec is 'FMP4', but you may override this behavior using MEncoder's -ffourcc option. You may also change the FourCC of existing files in the same way:

 mencoder input.avi -o output.avi -ovc copy -oac copy -ffourcc XVID

Note that this will set the FourCC to XVID rather than DIVX. This is recommended as DIVX FourCC means DivX4, which is a very basic MPEG-4 codec, whereas DX50 and XVID both mean full MPEG-4 (ASP). Therefore, if you change the FourCC to DIVX, some bad software or hardware players may choke on some advanced features that libavcodec supports, but DivX doesn't; on the other hand XviD is closer to libavcodec in terms of functionality, and is supported by all decent players.

Because of this annoying detail, third-party software may fail to decode video that has been encoded with software based on a recent libavcodec, such as VLC. Modifying the fourcc with 'DX50' or 'XVID', for example, should resolve the problem.


See also