[FFmpeg-user] ISO mp4 Major Brand field non-compliant

Carl Eugen Hoyos ceffmpeg at gmail.com
Mon Oct 24 12:03:20 EEST 2016

2016-10-24 4:04 GMT+02:00 Owl Owl <whootandahalf at gmail.com>:
> Folks,
> I've been attempting to stream videos that I have created with ffmpeg
> to my chromecast using a local webserver. The process is very simple:
> 1) Encode the video with ffmpeg into an mp4 container
> 2) Start webserver hosting that file

> 3) Tell chromecast to play said video

Do I understand correctly that I need a physical chromecast
device to reproduce?

> It had been failing for quite a while

Do you mean it worked before?

> but the "BigBuckBunny" example was working perfectly.
> Investigating further, I discovered that there is a Major and
> Minor brand field in the header of the mp4 and, as it turns
> out, ffmpeg inserts "isom" as the major brand and "512" as
> the minor.
> I discovered the following bug report from about 9 months ago:
> https://trac.ffmpeg.org/ticket/5178?cversion=0&cnum_hist=15
> Sadly, it appears that that report has been ignored.

This is not true (and I don't understand how the reason for this
claim could be a misunderstanding).
On the contrary, I tried my best to explain a misunderstanding
about how FFmpeg and MP4Box work to the OP (the same
misunderstanding that you may have, see my question below),
the OP knew better than me though;-(

> It's unclear to me reading through the comments the reason
> for "needs_more_info" being the status.

Two things were missing:
No answer was given to the question which player fails with
isom files made with FFmpeg. (You seem to have answered
It wasn't verified if changing the major type helps.

> If nothing else, the fact that it's ISO non-compliant, and for no
> good reason that I can tell, should be enough.

> The MP4Box workaround command mentioned in that bug
> tracker worked for me to correct ffmpeg's mistake.

> However, the "-brand" option did not work

Sorry if I misunderstand this (I am not a native speaker):
Do you mean you used the -brand option but the output files
were (binary) identical no matter what argument you passed?

Or do you mean you tried "-brand mp41", chromecast
still didn't play the output file but you still believe that we
just have to change the major (and minor) type and
playback would work?
This seems very unlikely to me but you seem to disagree?

> nor should either of those options be required to obtain a
> playable mp4 from ffmpeg.

Many players, including WMP and (some versions of) QT
play isom files written with FFmpeg...

> Steps to reproduce the problem:
> 1) Download BigBuckBunny:
> http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4

This is an mp42 file. FFmpeg does not support writing mp42 files.
I suspect it is possible but not completely trivial to fix this.

Please test the brand option (or use your favorite binary editor)
and report back to verify or falsify your analysis.

Then ask the chromecast people what it is that they don't like
about the FFmpeg file / what their requirements regarding isom

Carl Eugen

More information about the ffmpeg-user mailing list