Apple launches HTTP Streaming Standard

There are two ways to deliver video files over the web: (i) progressive download and (ii) streaming. Progressive downloads are typically cheaper and work with any server, but do not offer content protection nor seeking to undownloaded parts. Streaming servers offer these functionalities, but must be installed on your server(s). Since server side access and / or knowledge is not always readily available, some developers choose an “in between” solution of HTTP streaming through the use of a small server side script (e.g. PHP, ASP, etc.).

For the last decade, Apple has been selling QuickTime Streaming Server, which uses an RTSP (Real-Time Streaming Protocol) server to stream live or rebroadcast video feeds to viewers. Apple uses this technology to stream some of its own live events. But, despite offering royalty free streaming and also delivering it as an open source project, QuickTime’s RTSP streaming server hasn’t gained the traction it was once expected to achieve. A large part of this is due to the fact that RTSP traffic is blocked by many firewalls, making it hard to deliver streams reliably. The audio and video conferencing used by iChat also relies on RTSP, causing some users frustrating problems for the same reason. Getting RTSP video streaming to work on the iPhone would be even more hard, as it routinely moves between mobile and WiFi networks.

Enter HTTP Live Streaming. The basic mechanics involve using software on the server to break an MPEG-2 transport stream into small chunks saved as break files, and an extension to the .m3u playlist specification (.m3u8) to tell the client where to get the files that make up the complete stream. The media player client just downloads and plays the small chunks in the order specified in the playlist, and in the case of a live stream, periodically refreshes the playlist to see if there have been any new chunks added to the stream.

Apple attempted to solve the RTSP problem long ago in QuickTime Streaming Server by making an option to bundle up RTSP streaming video traffic into HTTP packets, which appear identical to standard web traffic and therefore are permitted through most firewalls. This involves a extra layer of overhead but, resulting in a greater demand for bandwidth. For the iPhone, Apple chose to pursue a different strategy, which it calls HTTP Live Streaming.

Adaptive Streaming allows programmers to offer a higher quality viewing experience to a broader audience. Being able to offer HD streams all the way down to low bandwidth streams, without pauses or interruptions of the video, makes for a significantly improved consumer experience.

For examples of iPhone HTTP Streaming segments, see Ankoder – Online Video Encoding. Viewing live streams requires iPhone 3.0 or Snow Leopard QuickTime X.

History of Open Source Video Transcoder – FFmpeg

FFmpeg is a computer program that can record, convert and stream digital audio and video in numerous formats. FFmpeg is a command line tool that is composed of a collection of free software / open source libraries. It includes libavcodec, an audio/video codec library used by several other projects, and libavformat, an audio/video container mux and demux library. The name of the project comes from the MPEG video standards group, together with “FF” for “quick forward”. The logo uses a zigzag pattern that shows how MPEG video codecs handle entropy encoding.

FFmpeg is free software and is licensed under the LGPL or GPL depending on your choice of configuration options. If you use FFmpeg or its constituent libraries, you must adhere to the terms of the license in question.

FFmpeg is developed under GNU/Linux, but it can be compiled under most operating systems, including Apple Inc. Mac OS X, Microsoft Windows and AmigaOS. Most computing platforms and microprocessor instruction set architecture are also supported, like x86 (IA-32 and x86-64), PPC (PowerPC), ARM, DEC Alpha, SPARC, and MIPS architecture.

Windows DLLs are not portable, bloated and often slow. Moreover FFmpeg strives to support all codecs natively. A DLL loader is not conducive to that goal. For multithreaded MPEG* encoding, the encoded slices must be independent, otherwise thread n would practically have to wait for n-1 to end, so it’s quite logical that there is a small saving of quality. This is not a bug.

There are two video codecs and one video container invented in the FFmpeg project during its development. The two video codecs are the lossless “FFV1″, and the lossless or lossy “Snow codec”, for which a version 1.0 is still in development, and the video container is “NUT” which is also currently being actively developed.

If you are looking for hosted ffmpeg alternative video transcoder, Ankoder is for you. It has more video transcoding facial appearance then traditional FFMpeg hosting.

categories: ffmpeg,video encode,video codec,streaming,open source,transcode,encoder,video convert,audio,video streaming