MPEG4 Streaming whoas

I should right a whole post about the lack of robust video streaming servers, but I’ll save that for another day. For now, I’ve settled on RealServer (RS) (which is the commercialized version of Real’s open source Helix Server), and video actually streams to a plethora of apps, including: QuickTime Player (QT), VideoLan Client (VLC), various phones, etceteras.

So, what’s the deal with MPEG4 streaming?

I’ve tried a virtual cornucopia of tools to transcode to MPEG4 as well as package and hint the MPEG4 files. The list includes:

  • ffmpeg
  • QuickTime Player export functionality
  • MPEG4IP tools
  • GPAC tools
  • mplayer / mencoder

Creating an MPEG4 video track and an MPEG4 audio track inside an MPEG4 container has always been fairly straight forward. Generating this type of file from ffmpeg results in a playable video file, and more importantly, playable in all players I’ve ever tried.

The issue at hand is correctly adding hint tracks to the MPEG4 container. MPEG4IP tools, especially the notable “mp4creator” seems to work just fine for the video track, but SEGFAULTs when trying to hint the audio track. I probably need to read up a lot more on MPEG4 containers, but at the moment, I’m confused if the tracks need to be interleaved or not; part of me thinks they must, as files (encoded as above) I’ve streamed from RS have played just fine in VLC, but fail to have audio in QT. Inspecting the stream’s info in the QT Player only shows the video track. Very intriguing.

At the moment, I’m trying a new set of MPEG4 tools, this time from the GPAC project. I’ll report back, when — not if! — things are working.