Video is a complex subject, and being able to provide video that will work for a majority of end users is not an easy task. When dealing with video, you have to consider the following:
Containers |
Video Codec |
Audio Codecs |
AVI |
Vorbis |
WAV |
MKV |
H264 |
Mp3 |
M4V |
Quicktime |
Ogg/Vorbis |
FLV |
DivX/XVid |
AAC |
MOV |
VP8 (Rumored Google codec) |
AC3 |
OGG |
|
DTA (DTS) |
|
|
|
Containers
The container is a package that can encapsulate multiple video and audio streams. Some examples of contianer formats are:
DIVX, OGG, MP4, MKV
Video Encoding
The encoding is the algorithm used to store the video information. Some examples of video encoding algorithms are:
Quicktime, Theora, h.264
Audio Encoding
Audio may also be stored in different encoding formats. Some examples of audio encodings are:
mp3, aac, wav
Distribution Protocol
In addition to worrying about the format of the file, there are also multiple methods of distribution. These can include:
HTTP Progressive Download
PseudoStreaming over HTTP
RTP/RTSP streaming
RTMP
Players
Most players like Windows Media Player rely on a codec being installed on the operating system to be able to decode the videos. There are a variety of players which may be embedded in a web page:
Windows Media Player
VLC
QuickTime
Silverlight
Flash
Encoding Tools:
You'll want a flexible tool to encode your files in whatever format and container you choose. Some suggestions:
ffmpeg -- command-line
x264 -- command-line
handbrake -- GUI on top of x264
Hardware Accelleration
For any sort of high-definition video, hardware acceleration is a must. This requires the proper combination of video drivers and player software on the client PC. Silverlight and the newer flash betas have this built-in.
Streaming Servers
HTTP based streaming and pseudostreaming are available on almost any web server.
RTP/RTSP/RTMP require a special streaming server. These include
Flash Media Server
Red5
Wowza
IPhone is special!
IPhone has a special way of handling streams -- HTTP segmenting. It requires a properly-encoded video be run through a "segmenter" which splits it up into many small video files and generates a single .m3u8 playlist. The iphone uses that playlist to determine which of the segments to download.
Current HTML5 Pitfals
Different browsers support different containers and encodings. Firefox currently only supports Ogg Theora/Vorbis. Chrome supports those + MP4/h.264.
Only supports http progressive download. There is no real "streaming" support.
Does not include any sort of "automatic-switching" of bitrates to adjust quality/bandwidth like Silverlight.
One more thing -- Recording
Currently the only way to record from a webcam within a video page (ala chat-roullette) is to use flash with the approriate backend server. Flash will capture and encode with Sorenson as it streams to the server.
Silverlight4 does not currently support this, but may have enough access to the underlying OS to allow for it with some work.
Comments (0)
You don't have permission to comment on this page.