- From: Henri Sivonen <hsivonen@iki.fi>
- Date: Sun, 8 Apr 2007 11:37:19 +0300
The <video> element is designed to accommodate codec-based fallbacks based on MIME types. The reasonable codec extension mechanism for browsers is using the facilities of the timed media framework of the underlying operating system (QuickTime on Mac OS X, DirectShow on Windows and gStreamer on GNU systems.) However, these systems, AFAIK, dispatch on container filename extension or magic number and codec FourCC rather than by MIME parameters. Therefore, special care is needed in order to make extensibility and MIME-based fallback work with codecs not shipped by the browser vendor. For example, on Mac OS X, one would want QuickTime itself to handle the MP4 container, AAC, the 3 lowest profiles of H.264 and MPEG-4 Simple Profile while giving MPEG-4 Advanced Simple Profile to 3ivx, Windows Media stuff to Flip4Mac and Ogg Theora to Xiph QT Components. These would all need to hook into the MIME-based fallback system. Since giving guidance in the spec itself is more likely to lead to vendors and authors understanding codecs parameter than expecting them to follow normative references, I think the spec should document the correct <source> element type attribute values for the following realistic cases. (MIME without parameters and filename extension in parentheses.) * Theora video and Vorbis audio in Ogg container. (application/ ogg; .ogg) * Dirac video and Vorbis audio in Ogg container. (application/ ogg; .ogg) * Theora video and Vorbis audio in Matroska container. (video/x- matroska; .mkv) * Dirac video and Vorbis audio in Matroska container. (video/x- matroska; .mkv) * H.264 Baseline profile video and Low-Complexity AAC audio in MP4 container. (video/mp4; .mp4) * H.264 Extended profile video and Low-Complexity AAC audio in MP4 container. (video/mp4; .mp4) * H.264 Main profile video and Low-Complexity AAC audio in MP4 container. (video/mp4; .mp4) * H.264 High profile video and Low-Complexity AAC audio in MP4 container. (video/mp4; .mp4) * MPEG-4 Simple Profile profile video and Low-Complexity AAC audio in MP4 container. (video/mp4; .mp4) * MPEG-4 Advanced Simple Profile profile video and Low-Complexity AAC audio in MP4 container. (video/mp4; .mp4) * MPEG-4 Simple Profile profile video and AMR audio in 3GPP container. (video/3gpp; .3gp) * WMV9 video and WMA 2 audio in ASF container. (video/x-ms-wmv; .wmv) * WMV8 video and WMA 2 audio in ASF container. (video/x-ms-wmv; .wmv) * VC-1 video and WMA 10 Pro audio in ASF container. (video/x-ms- wmv; .wmv) * Real Video 10 video and High-Efficiency AAC audio in Real Media container. (application/vnd.rn-realmedia; rm) * XviD video and MP3 audio in AVI container. (video/x-msvideo; .avi) * Motion-JPEG video and uncompressed PCM audio in AVI container. (video/x-msvideo; .avi) * MPEG-1 video and MPEG-1 Audio Layer II audio in MPEG-1 program stream (video/mpeg; .mpg) (That's a lot of cases and, yet, none are contrived.) I tried to figure this out on my own with RFC 4281 and concluded that this is not something that authors or even browser implementors are likely to get right without an expert-created lookup table. I see that at least of the RFC authors reads this mailing list. :-) -- Henri Sivonen hsivonen at iki.fi http://hsivonen.iki.fi/
Received on Sunday, 8 April 2007 01:37:19 UTC