Moving Pictures - Web 2.0 Expo NYC

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    7 Favorites

    Moving Pictures - Web 2.0 Expo NYC - Presentation Transcript

    1. Moving Pictures Implementing Video on Flickr Cal Henderson
      • Hello
    2. Flickr
      • Large scale kitten sharing website
      • Started 2003, launched 2004
        • 5 years old this december
      • Almost 3 billion photos
    3. Enter: Video
      • Video was added this year
        • Launched April 2008
      • Many hundreds of thousands of videos uploaded
      • Many millions of playbacks
    4.  
    5.  
    6.  
    7.  
    8.  
      • “ Video? That’s just like photos!”
      • -Me, before Flickr Video
    9. 12 4 Steps
      • 4 main tasks
        • Uploading
        • Transcoding
        • Storage
        • Serving & Playback
      • 1.
      • Upload
    10. Simple upload
      • Web forms
        • Just like any other file
        • <form action=&quot;/uploadify/&quot; method=&quot;post&quot; enctype=&quot;multipart/form-data&quot;>
        • <input type=&quot;file&quot; name=&quot;fred&quot; /> <input type=&quot;submit&quot; value=&quot;Go!&quot; />
        • </form>
      • But files are large / huge
    11. Issues
      • Two components for uploading:
        • Sending from the client
        • Receiving on the server
      • Both of these present problems
    12. Sending from the client
      • Multiple options
        • Simple form
        • Flash
        • Desktop app
    13. Simple Forms
      • Pros
        • Very easy to implement
        • Works on every browser out of the box
      • Cons
        • Upload progress is harder
        • ‘Slow’
        • Select a single file at once
    14. Flash
      • Pros
        • Upload progress is easy
        • ‘Fast’
        • Multi select of files
      • Cons
        • Harder to implement
        • Flash isn’t quite ubiquitous
    15. Desktop App
      • Pros
        • Upload progress is easy
        • ‘Very fast’
        • Multi select of files
        • Drag and drop
      • Cons
        • Hard to develop
        • Hard to deploy (relative to the web)
    16. Making Progress
      • Upload progress
        • Not impossible with plain forms
        • Just need to be able to query the upload progress via AJAX
      • Multiple machines
        • The VIP issue
        • Enter Perlbal
    17. Making Progress Browser Web 1 Web 2 1. Browser starts upload 2. Web server broadcasts progress via UDP 3. Browser queries progress via AJX call Load balancer
    18. Receiving on the server
      • File uploads are slow
        • Much slower than serving pages
      • Apache processes are heavy
        • Waste of resources
      • Use a poll based server (like jetty)
    19. Receiving on the server
      • Or, use a buffering layer
        • Perlbal is great for this
      • Or a lightweight Apache
        • E.g. w/ mod_proxy
      Browser Buffer Server Slow Fast
    20. But wait
      • It’s not just the first step that’s slow
      • Moving files around between servers is slow
        • Do it out of band
      • Asynchronous jobs are in order anyway
        • Do it!
      • 2.
      • Transcode
    21. Transcode?
      • Why transcode at all?
      • Input comes from many sources
        • Point & shoots
        • DV Cams
        • Mobile devices
        • Video editing software
      • All in different formats
    22. So many formats
      • But very few of these formats can be played back cross platform
        • Without special software or hardware
      • Formats are designed to do one thing well
        • They don’t always manage even that
      • Transcoding puts all videos on an equal footing
    23. Video file basics
      • Most file types are really just containers
        • MOV, FLV, AVI
      • The data inside can be in multiple formats
        • We call these codecs (encoder + decoder)
      • Files contains multiple ‘streams’
        • Both audio and video
    24. Interleave
      • Audio and video are often interleaved
        • Hence AVI
      • A video file looks like this:
        • Headers
        • Video chunk
        • Audio chunk
        • Video chunk
        • Audio chunk
        • Etc
    25. Compress
      • Raw video files are huge
        • A bitmap for every frame
        • Rarely used, even in post production
      • At 30 fps, that gets crazy pretty quickly
      • We don’t need to store every frame
        • Static backgrounds don’t change (much) between frames
    26. Compresssss
      • Intraframe
        • Treat each frame as a picture
        • Compress it (just like JPEG)
        • DCT (Discrete Cosine Transform)
      • Interframe
        • Store the differences between frames
        • Treat the pixels as a 3D array to be compressed
    27. The IPB
      • Three frame types: I, P & B
      • Intra coded pictures
        • A full raw frame
      • Predicted pictures
        • Based on a single reference frame
      • Bi-predictive pictures
        • Based on two or more reference frames
    28. IPBIPBIPBIPB
      • Reference frames may be I, P or B
      • P & B frames may contain a mix of image data and motion vector displacements
      • I frames require the most bits
        • Then P frames
        • Then B frames
    29. Bad terminology
      • We should really say picture
        • (Not frame)
        • Because of interlacing
      • Really, we encode fields not frames
        • Picture is the general term
      • And H.264 contains ‘slices’
        • Sub-regions of the field
        • ‘ Macroblocks’ & ‘Artifacts’
    30. I-Frames
      • Also called Key Frames
      • Allow easy random seeking
      • Twice a second for Digital TV & DVDs
      • More widely spaced online
    31. Seekable
    32. Seekable
    33. Oh, and audio too
      • We can worry less about this
        • Older problem, well solved
      • MP3 is pretty good
        • Who cares how it works?
      • Syncing is the only issue
        • Presentation Time Stamps (PTS) and Decode Time Stamps (DTS) in MPEG-2
    34. Flash! Woah-oh!
      • The big question:
      • Flash?
    35. Non-flash sites
      • QuickTime
      • Windows Media
      • This is gradually disappearing
      • Flash player is ubiquitous
      • Compression is good enough
      • Interactive too
      • But no 3D/VR as with QuickTime :(
    36. The Flash Player
      • Flash Player 6
        • March 2002
      • Video: Sorenson Spark (H.263)
      • Audio: MP3
        • Or ADPCM / Uncompressed
        • Or Nellymoser Asao
    37. Second Generation
      • Flash Player 7
        • August 2005
      • Video: On2 TrueMotion VP6
      • Audio: MP3
    38. The hot shit
      • Flash Player 9 (update 3)
        • December 2007
      • Video: H.264 (MPEG-4 Part 10)
        • w/ container formats from MPEG-4 Part 14
      • Audio: AAC (MPEG-4 Part 3)
      • Plus 3GPP Timed Text (MPEG-4 Part 17)
    39. TrueMotion VP6
      • Proprietary
      • Reasonable compression
      • Created by On2
        • Patented
        • Probably illegal for GPL code
      • YouTube uses it for lower quality and old streams
    40. H.264
      • Not proprietary
      • Good compression
      • MPEG Standard
        • Open, but patented
        • Patent licenses from the MPEG LA
        • Unclear how this applies to (L)GPL code
        • But probably badly
      • YouTube using it for higher quality streams
      • iPhones and AppleTV
    41. Software
      • Open source transcode tools
      • FFmepg
        • libavcodec for VP6
        • Probably illegal – dubious
        • Also pretty shoddy
        • Can only decode H.264
    42. More software
      • MEncoder
        • libmpcodecs uses libavcodec
      • VLC
        • libvlc uses libavcodec
      • So basically the same
        • Different muxing, same codecs
    43. Free H.264?
      • Unfortunately, not really
      • x264 is the only usable one
        • It’s pretty good
        • MEncoder can use it
        • Still limited in options at this point
        • Again, dubiously legal
    44. Non-free tools
      • Flash encoder
        • Not automatable
      • On2 FlixEngine
        • Creators of VP6
        • Windows or Linux
        • Some support for H.264
      • Rhozet Carbon Coder
        • The new hot shit
        • Good H.264 support
        • Windows
    45. Choices
      • Video codec
      • Resolution
      • Bitrate (VBR, CBR)
      • Keyframes
      • Audio codec
        • Channels
        • Bit depth
        • Sampling rate
    46. Doing it at scale
      • Not really a problem
      • Very easily parallelizable
      • Amazon EC2 is awesome here
        • Exactly what it was design for
        • Grow/shrink as needed
        • But, per-CPU software licensing
      • 3.
      • Store
    47. Easy!
      • Really, just like photos
        • But with bigger files
      • Same disk layout as any other serving
      • But the serving part is slower
    48. But..
      • Remember the files are huge
      • Operations take time
        • More likely to fail halfway through
        • Checksums are your friend
      • Do it all asynchronously
      • 4.
      • Serve & Playback
    49. The choice
      • Streaming
      • vs
      • Progressive
    50. Streaming
      • Pros
        • Easily seekable
        • Live feeds
      • Cons
        • Special server software
        • Slower to start
        • Firewall troubles
    51. Progressive download
      • Pros
        • Just use a web server
        • Play offline
        • Firewall/proxy friendly
      • Cons
        • Harder to seek ahead (but not impossible)
    52. Streaming tech
      • Non flash stuff
        • We’ll ignore that
        • You’re using flash, right?
      • RTMP
        • Real-time Messaging Protocol
        • Proprietary (thanks Adobe!)
    53. RTMP
      • RTMP - Raw TCP socket stuffs
      • RTMPT – RTMP tunneled over HHTP
        • For firewalls, etc
      • Flash Media Server
        • previously Flash Communication Server
      • Wowza Pro
        • $1000/server
    54. Open source
      • It’s not all bad
      • Red5
        • Java implementation of RTMP server
        • Mostly feature complete
        • Beta quality, but usable in production
        • Facebook
    55. Progressive
      • Used by the majority of large sites
      • Very simple!
      • Seekable with server support
    56. Seeking
      • Serve the FLV starting at a different point
      • Just add a simple FLV preamble before seeking into the file
      • Simple to do in PHP, Perl, etc
      • mod_flvx for Apache
      • mod_secdownload for lighttpd
      • 5.
      • Other considerations
    57. Review
      • Videos are slow
      • Expensive to review
      • Review grids
        • Doesn’t cover audio
    58.  
    59. Not enough?
      • Social tools are useful here
      • Summary
    60. Summing up
      • Flash makes sense
        • For uploading too
      • H.264 is probably your best bet today
      • Transcoding software still costs money
        • Unless you’re willing to take on the risk
      • Progressive download is basically awesome
    61. The end!
    62. Awesome!
      • These slides are available online:
      • iamcal.com/talks/

    + Cal HendersonCal Henderson, 2 years ago

    custom

    1951 views, 7 favs, 0 embeds more stats

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 1951
      • 1951 on SlideShare
      • 0 from embeds
    • Comments 0
    • Favorites 7
    • Downloads 26
    Most viewed embeds

    more

    All embeds

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories