Moving Pictures

Web 2.0 Expo Conference

This talk was presented by Cal Henderson from Flickr

pic

What did flickr have to do to host video?

In order to host videos there are several things you have to deal with:

  • Uploading
  • Transcoding
  • Storage
  • Serving/Playback

Uploading

Videos are very large(huge). This presents a problem.

Client options:

  • HTML Form
  • Flash
  • Client application

HTML Form

  • pros: ubiquitous, simple
  • cons: slow, upload progress???, one at a time
  • Upload progress can be overcome using Ajax to poll the server. Doesn’t work when you have clustered servers involved.
  • Solution to this is Perlbal – webserver that broadcasts upload progress info via UDP making info available to all servers

Flash

  • pros: upload progress, fast, multiple files
  • cons: difficult to implement, not really ubiquitous

Desktop application

  • pros: upload progress, very fast, multiple files, drag n drop
  • cons: hard to develop, hard to deploy

Then there are server issues

  • Uploading is slow, ties up threads for a long time.
  • The solution is to proxy uploading. Perlbal supports this, so does mod_proxy (apache).
  • Moving files between servers is slow – Must use background/asynchronous processing to move files.

 

Transcoding

  • Transcoding is about format conversion.
    There are lots of different input sources, different formats.
  • AVI = Audio Video Interleaved.

Compression
(He was moving pretty fast through this stuff and kind of lost me here. Here is a wikipedia page on Video Compression Picture Types that I found useful.

  • Intraframe – each frame is compressed.
  • Interframe – store differences b/n frames. treat frames as 3d layers of pixels. Can reuse pixels that don’t change?
  • 3 frame types: I P B.
  • I = Index or Key or Intra coded frames. Contain the most bits.
  • P = Predictive.
  • B = Bi-predictive

Seeking within video takes you to the nearest I (key) frame. Having more I frames in your video allows more precise seeking.

Using Flash

  • pretty much ubiquitous. Funny how he contradicted himself here. Apparently Flash isn’t ubiquitous enough for uploading but for playback it’s just fine.
  • no 3D/VR

He then sped through a history of the Flash player and the supported video types.

  • Flash 6 2002
  • Flash 7 2005
  • On2 TrueMotion VP6
  • Flash 9 update 3
    Video: H264
    Audio: AAC

TrueMotion VP6

  • proprietary
  • probably illegal for GPL use.
  • bulk of the videos on the web use this format

H264

  • not proprietary
  • good compression
  • MPEG standard
  • not likely GPLable

YouTube uses it for higher quality vids.
iPhone/Apple TV use it.

Transcoding Software
FFMpeg

  • based on libavcodec for VP6
  • H264 decode only, no encode support

MEncoder
VLC

  • both use libavcodec

Non-Free tools

  • Flash encoder
    • toy

On2 FlxEngine

  • creators of VP6
  • Windows or Linux
  • H264 support

Rhozet Carbon Coder

  • H264

Wikipedia has a good description of H264.

Storage

  • straightforward
  • just large files
  • use of checksum to ensure quality

Serving/playback

Two options:

  • streaming
  • progressive download

Streaming

  • best for live video
  • seekable
  • requires special software
  • slower
  • firewall issues

Red5

  • Open Source Streaming server written in Java.

Progressive Download

  • most sites are going this route unless content is live.

It's only fair to share...
Share on FacebookGoogle+Tweet about this on TwitterShare on LinkedIn

Leave a Reply