View Full Version : mp4creator & ISMA compliance
Doom9
7th March 2005, 20:37
At the end of a muxing process, mp4creator just sits there using 100% cpu for about 2 minutes seemingly doing nothing. Then it throws a "MakeIsmaCompliant:can't make ISMA compliant when file contains an avc1 track" error when dealing with AVC content, or prints out "es config size is 31" when the video is ASP. Does anyone know what mp4creator is doing during those 2 minutes?
bond
7th March 2005, 22:32
i assume it tries to make the file isma compliant
as the video stream is avc it cant of course
the strange thing is that you actually get that message cause i dont get it when muxing avc into .mp4
i assume you get it when muxing aac into an avc-mp4? or avc in an aac-mp4?
JoeBG
8th March 2005, 06:31
Originally posted by bond
i assume you get it when muxing aac into an avc-mp4? or avc in an aac-mp4?
si :)
Doom9
8th March 2005, 09:09
i assume you get it when muxing aac into an avc-mp4? or avc in an aac-mp4?Yup. Not sure I'm also getting it when creating a new MP4 (but I do think so).
bond
8th March 2005, 09:35
Originally posted by Doom9
Yup. Not sure I'm also getting it when creating a new MP4 (but I do think so). i think in that case, because of the aac, mp4creator tries to automatically make the file isma compliant, but cant because of avc
are you using the "-optimize" option in the cmdl? maybe this enables the "make isma compliant"? you might want to try without
JoeBG
8th March 2005, 14:02
- optimize will work at the end of all muxing prozesses after adding something else with mp4box. I know this problem from mp4muxer and that is the reason why mp4muxer always adds the last stream with mp4box and then uses -optimize.
Doom9
8th March 2005, 15:48
are you using the "-optimize" option in the cmdl? No I am not.
bond
8th March 2005, 18:19
hm you might want to contact the mpeg4ip dev to make this isma compliance not automatic...
defunkt
8th March 2005, 18:33
You know you can disable ISMA compliance and get rid of this error with the switch
-force3GPCompliance
I add video, then audio using the above command line option.
bond
8th March 2005, 18:36
hm i dunno what mp4creator does internally, but theoretically 3gpp (.3gp files) and isma compliance are totally different things
Doom9
8th March 2005, 20:17
but isn't 3GP a format for mobile devices and thus completely unsuited for what we're doing here?
bond
8th March 2005, 20:34
Originally posted by Doom9
but isn't 3GP a format for mobile devices and thus completely unsuited for what we're doing here? yes, .3gp is an own file format more than heavily based on .mp4, designed for mobiles, which also defines the storage of h.263 and amr streams
Doom9
9th March 2005, 12:29
I've run an experiment, using a full movie x264 encoding from an older build (1 b-frame).
mp4creator -c input -rate fps output.mp4
Duration: 1:30, 30second writing data @ low cpu usage, then 1minute seemingly doing nothing but using 100% cpu. After that, the filesize is increased by somewhat less than 100 KB as compared to where the major I/O operation stops.
mp4creator -c input -rate fps -interleave output.mp4
Duration: 1:24, same behaviour as the above
mp4creator -c input -rate fps -optimize output.mp4:
Duration 1:55, 30 seconds writing data, 55seconds @ 100% cpu, rest writing tmp file (it actually writes another file after the high cpu usage it is over, then deletes the output.mp4 and renames the tmp file to output.mp4
mp4creator -c input -rate fps -h output.mp4
Duration: about 6 minutes, then crashed
Note that in no case did I get an ISMA compliance warning.. but I created a new MP4 in each case.
Doom9
9th March 2005, 12:44
2nd test: this time output.mp4 was a pre-existing mp4, created with mp4crator containing one AAC track from Nero.
Durations and filesizes were once again the same (I didn't try the -H option anymore), but this time after the 100% cpu usage period, the filesize was increased by about 5MB in each case.
Next test will be using a Nero generated MP4.
Doom9
9th March 2005, 12:47
the next test yielded the same. ISMA compliance warning and a 1 minute period where mp4creator hogs the CPU.
Doom9
9th March 2005, 12:57
now I also tried with an .m4v input (libavcodec mpeg-4). I created a new MP4 file from scratch using RAW input. It takes much longer than with AVC content, and CPU usage is high throughout the process, but after about half of the time, I/O goes down to zero and only the CPU is being used, until at the very end the file is changed again.
And there's also no message about ISMA compliance at the end. I'm afraid I don't have the corresponding AAC audio for that movie to see if having a pre-existing MP4 with audio would change anything.
absinthe
9th March 2005, 14:08
Originally posted by Doom9
mp4creator -c input -rate fps -h output.mp4
Duration: about 6 minutes, then crashed
Note that in no case did I get an ISMA compliance warning.. but I created a new MP4 in each case. This was my whole issue here (http://forum.doom9.org/showthread.php?s=&threadid=90860&perpage=20&pagenumber=2). The same thing happened every time I used "-H" as well, including the message.
I don't know much about streaming, but I did do a quick Google on the ISMA and found www.isma.tv. Interestingly, they state that one of their goals is "Creating important technical specifications that support AVC video and HE-AAC audio coding."
As I've mentioned before, I have noted that there's no "hints" track in AVC/AAC MP4 files output by Nero. But I am curious as to exactly what "-optimize" is supposed to do.
-abs
LigH
9th March 2005, 16:13
"-optimize" moves the structural tags, which are usually added after finishing the encoding at the end of the file, to the front so that a decoder can read the file sequentially.
And adding a hint track is only possible to a video track, and not before this track was multiplexed - trying to hint while multiplexing will probably crash mp4creator (on my PC with Win2K, it reported that the swap file is too small...).
The following order worked well for me:
1) Create an MP4 audio file with BeSweet and BSN that contains AAC audio. Depending on the used Nero AAC encoder version, this file may only contain the audio track, or a few more - like this:Track Type Info
1 audio MPEG-4 AAC LC, 80.138 secs, 53 kbps, 48000 Hz
2 od Object Descriptors
3 scene BIFS
Metadata Tool: Nero AAC Codec 2.9.9.999
2) Multiplex the H.264 AVC raw track into the MP4 file (mp4creator -c *.264 -rate fps *.mp4). Now it contains one more track:Track Type Info
1 audio MPEG-4 AAC LC, 80.138 secs, 53 kbps, 48000 Hz
2 od Object Descriptors
3 scene BIFS
4 video H264 Main@4, 80.080 secs, 1001 kbps, 512x288 @ 25.000000 fps
Metadata Tool: Nero AAC Codec 2.9.9.999 mp4creator 1.2.8But the structural tags and tables are still at the end of the file.
3) Hint and optimize the file. The problem here is to know which track is the video; you can ask mp4info about it. In my example, it is track 4 (mp4creator -hint=4 -interleave -optimize *.mp4).
Earlier versions of the Nero AAC encoder didn't write "od" and "scene" tracks, there it would be track 2...
Now the structural tags are at the front of the MP4 file, the video is hinted - and what does "interleave" really? I'm not yet sure.
absinthe
9th March 2005, 17:01
Originally posted by LigH
3) Hint and optimize the file. The problem here is to know which track is the video; you can ask mp4info about it. In my example, it is track 4 (mp4creator -hint=4 -interleave -optimize *.mp4). Ahhhhh, so in other words if H=x, "x" is the number of the video track to add a "hint" to (right?). When I looked at tracks previously, I saw that there was a hint track with its own number, and I was thinking that you were supposed to assign a hint track a track number.
Thanks for info.
-abs
LigH
9th March 2005, 22:16
I realised that omitting the track number, or selecting a non-video track, often just results in error messages. Hinting the video was most reliable.
But indeed, I would like a verbose manual about the options of mp4creator. And I don't want to read a whole ISO/IEC spec before I understand that stuff... ;)
vBulletin® v3.8.11, Copyright ©2000-2026, vBulletin Solutions Inc.