[FFmpeg-devel] [RFC] Sending H.264 stream to multiple containers

Nicolas George nicolas.george at normalesup.org
Tue Jul 16 15:27:00 CEST 2013

L'octidi 28 messidor, an CCXXI, Peng a écrit :
> You are correct. There are only two bitstream formats: the NAL unit
> stream format and the byte stream format
> (ISO 14496-10 Annex B).
> I apologize for confusing you by misusing the term 'MP4-compliant
> stream'. The so called 'stream'
> should be more precisely called 'AVC sample structure within MP4
> file format (ISO 14496-12)', which is
> part of the AVC file format (ISO14496-15) definition. That's why
> ffmpeg does the transformation in MOV muxer.

Thanks, but now I am even more confused. I see three binary toggles:

- NAL unit stream / Annex B byte stream

- global headers / no global headers

- MP4 compliant / not MP4 compliant

Theoretically, that makes eight combinations, but I suppose most of them are
impossible / irrelevant.

You say that the lavf MOV muxer transforms into MP4-compliant structure.
Logically, the MOV demuxer should do the reverse transformation, and nobody
should worry about except people implementing MOV tools and people examining
a MOV file in a binary editor. Am I missing something?

That leaves four combinations:

1. NAL unit stream     with    global headers;
2. NAL unit stream     without global headers;
3. Annex B byte stream with    global headers;
4. Annex B byte stream without global headers.

I suspect the third one is useless, but I really do not know. Can you tell
for each combination in what kind of circumstances it is used? For example,
what goes in Matroska? I suspect 1. What goes in MPEG-TS? I suspect 4. What
goes in RTP? I have no idea.


  Nicolas George
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20130716/d318d2d5/attachment.asc>

More information about the ffmpeg-devel mailing list