Yes, altough i dont like the idea of doing so, the MPEG-4 standard defines how to place any stream in MP4. Similar to how streams are marked in AVI with private FourCCs, in MP4 they get a "private track ID". Note that no player will be able to handle such streams in MP4, but will simply ignore them, if not explicitely specified to do so.
The following streams, not covered by MPEG-4, can be placed in MP4 already:
- Ogg Vorbis and Ogg Theora, via MP4Box.
- Apple's Lossless Audio (ALAC/ALE - not compliant with MPEG-4 ALS), via iTunes.
- DVD picture subtitles (Vobsubs), via Nero Recode2.
- AMR Speech Audio, via the NEC e808/e616 mobile phone.
Only the future will show if these private streams will be widely accepted and supported...
There are potential problems when muxing from AVIs (especially with b-frames/B-VOPs/bi-directional encoding) into MP4:
1) "delay frames", caused by the old VFW interface some codecs still use (XviD, DivX5). only when encoding with VirtualDub/Mod these will be automatically dropped when using b-frames.
2) "packed bitstream", caused by the old AVI container, which is not really capable of storing b-frames. PB is used in DivX5 (only with 1 consecutive b-frame set) and by default in new XviD builds (make sure the PB option is unticked in XviD) and packs b-frames together with other frames.
3) "ctts" atom, which has to be written when muxing b-frames into MP4.
4) "vol", which is placed on every keyframe in AVI, but has to be seperated from the movie data in MP4.
Currently only the 3ivx mp4 muxer and GPAC's MP4Box handle all these things correctly! use only them for AVI conversions, especially with packed bitstreams or if you are unsure which b-frame option/encoding app was used. otherwise the chance is great that you will not get a 100% spec compliant MP4 file!
No, this is a lossless process, only taking out the media streams from one container and putting them into MP4.
MP4 needs far less overhead than the AVI container (especially with VBR-MP3), no wonder cause in contrary to AVI the MP4 container was designed for storing MPEG-4 Video and MP3.
As a rule of thumb you can say that the video AVI filesize = final audio+video MP4 size (like 700MB) - audio MP4 size + 3MB.
3ivx also offers a MP4 bitrate calculator on their website, but it doesnt seem to be very accurate.
No, the MP4 container itself doesnt handle this as the MPEG-4 standard expects the Error Detection/Correction to be placed in the bitstreams (where it belongs).
Yes, this is already possible for MPEG-4 ASP video streams and MP3 Audio streams (currently no real solution for AAC exists).
Yes and No. No, because MP3 is one specific type of audio format, whereas MP4 is a container format and not an audio codec. Yes, because MP4 is part of the MPEG-4 Standard, which can be taken as the successor of the MPEG-1/2 standard, where MP3 was part of.
MPEG-4 also includes AAC, an audio codec better than MP3, which most of the time comes in the MP4 format.
Apple's MOV container format was indeed taken as a starting point for MP4 (mainly the moov atom), but there are also lots of differences between them.
MP4 on the other hand itself was the starting point for the development of the 3GP format (mainly for mobile phones), which has more in common with MP4 as MP4 with MOV for example, but still is a different format.
There are a lot of infos availabe on the net:
A starting point can be the homepage of the MPEG Industry Forum
Some documentation on MP4 is also available from here and here
FAQs are available about the MPEG-4 Standard or especially about MPEG-4 Systems (very technical)
Other infos can be found on the audiocoding wiki (with a lot of info also about AAC)
Guides on MPEG4IP are available about MP4 creation, compiling issues
For more information, please see MPEG-4(MP4) Event.