user10438: Can one "dump"/extract the MOOV atom from an MP4 file? If so, how? Hoping for an obscure FFMPEG command.
I need to be able to process/play a stream without searching for the MOOV atom over and over again. For very long streams, this can run into several megabytes of data. It's rather strange, I don't think the MOOV atom is huge, I just think that it is scattered thruout the first N megabytes (i.e. toplevel data at the begnning, with references to further atoms that are later in the stream).
Thus, it would make sense for me to extract the MOOV atom out of the file, keep it 

user14444: You can also use qtfaststart -l fileName which outputs something more human readable like :
$ qtfaststart -l myFile.mp4
ftyp (32 bytes)
free (8 bytes)
mdat (283805466 bytes)
moov (3541465 bytes)

The Python qtfaststart is different from the qt-faststart binary (bundled with ffmpeg)  and can be installed using this command:
sudo -H $(which pip) install qtfaststart

qtfaststart command line arguments :
$ qtfaststart -h
Usage: qtfaststart [options] infile [outfile]

Options:
  --version     show program's version number and exit
  -h, --help    show this help message and exit
  -d, --debug   Enable debug output
  -l, --list    List top level atoms
  -s, --sample  Create a small sample of the input file

The qtfaststart sources are here

user10507: You can use AtomicParsley to parse the metadata of a MP4-file. For example
 AtomicParsley /path/to.mp4 -T 1

will print the whole atom tree.

user22684: Maybe I'm a bit late, but I'd use bento4 mp4dump, it's really easy to install on mac with brew brew install bento4
mp4dump 1.mp4 

[ftyp] size=8+16
  major_brand = iso5
  minor_version = 200
  compatible_brand = iso6
  compatible_brand = mp41
[moov] size=8+740
  [mvhd] size=12+96
    timescale = 1000
    duration = 0
    duration(ms) = 0
....


10438: <p>Can one "dump"/extract the MOOV atom from an MP4 file? If so, how? Hoping for an obscure FFMPEG command.</p>

<p>I need to be able to process/play a stream without searching for the MOOV atom over and over again. For very long streams, this can run into several megabytes of data. It's rather strange, I don't think the MOOV atom is huge, I just think that it is scattered thruout the first N megabytes (i.e. toplevel data at the begnning, with references to further atoms that are later in the stream).</p>

<p>Thus, it would make sense for me to extract the MOOV atom out of the file, keep it </p>
 14444: <p>You can also use <code>qtfaststart -l fileName</code> which outputs something more human readable like :</p>

<pre><code>$ qtfaststart -l myFile.mp4
ftyp (32 bytes)
free (8 bytes)
mdat (283805466 bytes)
moov (3541465 bytes)
</code></pre>

<p>The Python <code>qtfaststart</code> is different from the <code>qt-faststart</code> binary (bundled with <code>ffmpeg</code>)  and can be installed using this command:</p>

<pre><code>sudo -H $(which pip) install qtfaststart
</code></pre>

<p><code>qtfaststart</code> command line arguments :</p>

<pre><code>$ qtfaststart -h
Usage: qtfaststart [options] infile [outfile]

Options:
  --version     show program's version number and exit
  -h, --help    show this help message and exit
  -d, --debug   Enable debug output
  -l, --list    List top level atoms
  -s, --sample  Create a small sample of the input file
</code></pre>

<p>The <code>qtfaststart</code> sources are <a href="https://github.com/danielgtaylor/qtfaststart" rel="nofollow noreferrer">here</a></p>
 10507: <p>You can use <a href="http://atomicparsley.sourceforge.net/" rel="noreferrer">AtomicParsley</a> to parse the metadata of a MP4-file. For example</p>

<pre><code> AtomicParsley /path/to.mp4 -T 1
</code></pre>

<p>will print the whole atom tree.</p>
 22684: <p>Maybe I'm a bit late, but I'd use <a href="https://www.bento4.com/documentation/mp4dump/" rel="noreferrer">bento4 mp4dump</a>, it's really easy to install on mac with brew <code>brew install bento4</code></p>

<pre><code>mp4dump 1.mp4 

[ftyp] size=8+16
  major_brand = iso5
  minor_version = 200
  compatible_brand = iso6
  compatible_brand = mp41
[moov] size=8+740
  [mvhd] size=12+96
    timescale = 1000
    duration = 0
    duration(ms) = 0
....
</code></pre>
