Skip to main content

iPhone MP4 Video Playlist



I have a library of footage encoded as H.264/AAC inside MP4 containers. Right now I can successfully stream the footage to the iPhone using Apache and mod_h264.





What I'd like to be able to do is tell the iPhone to play three clips back to back.





The natural solution seems to be to create a .m3u8 playlist and point the player at that, however when I do I get audio and no video. I'm not sure if this is because the iPhone only supports playlist video thats encoded as an Mpeg2 Transport Stream (.ts) or if I'm doing something wrong.





Has anyone had any experience streaming MP4 files to the iPhone in a playlist?



Source: Tips4all

Comments

  1. It looks like they only support MPEG-2 transport streams.

    From the HTTP Live Stream FAQ


    The protocol specification does not
    limit the encoder selection. However,
    the current Apple implementation
    should interoperate with encoders that
    produce MPEG-2 Transport Streams
    containing H.264 video and AAC audio
    (HE-AAC or AAC-LC).


    If you're open to converting your files, I would suggest the following approach:


    Download the HTTP Live Stream Tools
    Run mediafilesegmenter on each of your files
    Aggregate the variant.plist files generated above into a single file
    Run variantplaylistcreator on the aggregated variant.plist and use the .m3u8 it generates as your playlist for the live stream.

    ReplyDelete
  2. Here is a little info from the client perspective (using itunes):
    http://www.macworld.com/article/140935/2009/06/video_playlists_iphone.html

    iphone does support .m3u8 playlists, so you should be able to get it to work.

    Have you tried exporting a smart playlist from itunes?

    ReplyDelete

Post a Comment

Popular posts from this blog

Wildcards in a hosts file

I want to setup my local development machine so that any requests for *.local are redirected to localhost . The idea is that as I develop multiple sites, I can just add vhosts to Apache called site1.local , site2.local etc, and have them all resolve to localhost , while Apache serves a different site accordingly.