SlideShare a Scribd company logo
1 of 37
<video> will be your friend
       Joy Through “Standards”
Overview

• What is the video tag
• Why you can’t use it
• Why you’ll use it anyways
What is the Video Tag

• <video> makes video a first class citizen
• Part of the HTML5 specification
• As simple as <img>
Why You Can’t Use it


• Compatibility
• User Experience
Compatibility


• <video> standard does not mandate a format
• Just like the <img> tag
Two Primary Formats

       Theora

        H.264
Two Primary Formats

     Theora : ogg

      H.264 : mov/mp4/m4v
Taking sides
H.264                      OGG




        *
H.264

• Modern
• Scalable
• Efficient
But...


• Patented
• Royalty’d
Licensing


• MPEG-LA manages a patent pool
• Costs for Encoding, Decoding and
  potentially performance
Licensing


• MPEG-LA manages a patent pool
• Costs for Encoding, Decoding and
  potentially performance
What if you’re Firefox?

• Hard to pay a license cost
• Need cross platform support
• Values
What if you’re Firefox?

• Hard to pay a license cost
• Need cross platform support
                            Software Patents

• Values                      make me sad
OGG to the Rescue?

• On2 open sourced VP3, released patent
  claims
• Xiph.org group turns it into Theora
• Continues to enhance VP3
But...

• Technically inferior
• Submarine patents?
• Hardware support
What to do?

• Train is leaving the station
• IE9, Chrome, Safari, iEverything are on
  board with H.264
• Content producers are on board
• Fallback options exist
What to do?

• Train is leaving the station
• IE9, Chrome, Safari, iEverything are on
  board with H.264
• Content producers are on board
• Fallback options exist
Fallback example
<video>
  <source src=“video.mp4” type= “video/mp4” />
  <source src= “video.ogg” type= “video/ogg” />
  <object width="425" height="350"><param name="movie"
  value="myplayer.swf" />
  <param name= “flashvars” value= “file=video.mp4” />
  <embed src="myplayer.swf" flashvars= “file=video.mp4”
  type="application/x-shockwave-flash" width="425" height="350"> </
  embed>
    </object>
</video>
Fallback example
<video>
  <source src=“video.mp4” type= “video/mp4” />
  <source src= “video.ogg” type= “video/ogg” />
  <object width="425" height="350"><param name="movie"
  value="myplayer.swf" />
  <param name= “flashvars” value= “file=video.mp4” />
  <embed src="myplayer.swf" flashvars= “file=video.mp4”
  type="application/x-shockwave-flash" width="425" height="350"> </
  embed>
    </object>
</video>
Fallback example
<video>
  <source src=“video.mp4” type= “video/mp4” />
  <source src= “video.ogg” type= “video/ogg” />
  <object width="425" height="350"><param name="movie"
  value="myplayer.swf" />
  <param name= “flashvars” value= “file=video.mp4” />
  <embed src="myplayer.swf" flashvars= “file=video.mp4”
  type="application/x-shockwave-flash" width="425" height="350"> </
  embed>
    </object>
</video>
Fallback example
<video>
  <source src=“video.mp4” type= “video/mp4” />
  <source src= “video.ogg” type= “video/ogg” />
  <object width="425" height="350"><param name="movie"
  value="myplayer.swf" />
  <param name= “flashvars” value= “file=video.mp4” />
  <embed src="myplayer.swf" flashvars= “file=video.mp4”
  type="application/x-shockwave-flash" width="425" height="350"> </
  embed>
    </object>
</video>
Fallback example
<video>
  <source src=“video.mp4” type= “video/mp4” />
  <source src= “video.ogg” type= “video/ogg” />
  <object width="425" height="350"><param name="movie"
  value="myplayer.swf" />
  <param name= “flashvars” value= “file=video.mp4” />
  <embed src="myplayer.swf" flashvars= “file=video.mp4”
  type="application/x-shockwave-flash" width="425" height="350"> </
  embed>
    </object>
</video>
Why you want to use it

• Video can be a rich part of design
• Hardware acceleration
• Cross platform
Let’s build a player
Video Tag Attributes
  preload
               autoplay   controls
(autobuffer)


  height        loop      poster



    src         width
Video Tag Attributes
  preload
               autoplay   controls
(autobuffer)


  height        loop      poster



    src         width
Video Tag Attributes
  preload
               autoplay   controls
(autobuffer)


  height        loop      poster



    src         width
Video Tag Attributes
  preload
               autoplay   controls
(autobuffer)


  height        loop      poster



    src         width
Javascript Attributes
currentTime   startTime   duration


  paused       ended      seekable


 buffered      played     volume


  muted
Javascript Events

progress      play          pause



playing     canplay     canplaythrough



 ended     timeupdate
Living The Dream
Living The Dream
Caveats

• Some mobile platforms won’t run your JS
• Hardware accelerated platforms maybe
  limited to one video
• Make sure your server supports file resume
Summary

• <video> is coming
• It’s A Good Thing
• There are premade players today -
  jilion.com/sublime
• Great javascript helpers - html5video.org
@cmcfadden
http://z.umn.edu/lh

More Related Content

What's hot

Speed Up That Site! - a guide to caching plugins
Speed Up That Site! - a guide to caching pluginsSpeed Up That Site! - a guide to caching plugins
Speed Up That Site! - a guide to caching pluginsPeter Baylies
 
PG Day Us: Animations for Web & Hybrid
PG Day Us: Animations for Web & HybridPG Day Us: Animations for Web & Hybrid
PG Day Us: Animations for Web & HybridAlex Blom
 
Optimizing WordPress - WordPress SF Meetup April 2012
Optimizing WordPress -  WordPress SF Meetup April 2012Optimizing WordPress -  WordPress SF Meetup April 2012
Optimizing WordPress - WordPress SF Meetup April 2012Ben Metcalfe
 
Speeding Up WordPress sites
Speeding Up WordPress sitesSpeeding Up WordPress sites
Speeding Up WordPress sitesJason Yingling
 
Battling the WSOD - A Tech Support Tale
Battling the WSOD - A Tech Support TaleBattling the WSOD - A Tech Support Tale
Battling the WSOD - A Tech Support TaleKayleigh Thorpe
 
BP-6 Repository Customization Best Practices
BP-6 Repository Customization Best PracticesBP-6 Repository Customization Best Practices
BP-6 Repository Customization Best PracticesAlfresco Software
 
iOS Media APIs (MobiDevDay Detroit, May 2013)
iOS Media APIs (MobiDevDay Detroit, May 2013)iOS Media APIs (MobiDevDay Detroit, May 2013)
iOS Media APIs (MobiDevDay Detroit, May 2013)Chris Adamson
 
Standardizing and Managing Your Infrastructure - MOSC 2011
Standardizing and Managing Your Infrastructure - MOSC 2011Standardizing and Managing Your Infrastructure - MOSC 2011
Standardizing and Managing Your Infrastructure - MOSC 2011Brian Ritchie
 
Rails Asset Pipeline - What, Why, Tips, Do's and Dont's
Rails Asset Pipeline - What, Why, Tips, Do's and Dont'sRails Asset Pipeline - What, Why, Tips, Do's and Dont's
Rails Asset Pipeline - What, Why, Tips, Do's and Dont'sRohan Daxini
 
HTML5 and CSS3 Techniques You Can Use Today
HTML5 and CSS3 Techniques You Can Use TodayHTML5 and CSS3 Techniques You Can Use Today
HTML5 and CSS3 Techniques You Can Use TodayTodd Anglin
 
EasyEngine - Command-Line tool to manage WordPress Sites on Nginx
EasyEngine - Command-Line tool to manage WordPress Sites on NginxEasyEngine - Command-Line tool to manage WordPress Sites on Nginx
EasyEngine - Command-Line tool to manage WordPress Sites on NginxrtCamp
 
What is NetDevOps? How? Leslie Carr PuppetConf 2015
What is NetDevOps? How? Leslie Carr PuppetConf 2015What is NetDevOps? How? Leslie Carr PuppetConf 2015
What is NetDevOps? How? Leslie Carr PuppetConf 2015Leslie Carr
 
WebGL Camp 4 - A3 3D Engine
WebGL Camp 4 - A3 3D EngineWebGL Camp 4 - A3 3D Engine
WebGL Camp 4 - A3 3D Engineaerotwist
 
WordPress Server Security
WordPress Server SecurityWordPress Server Security
WordPress Server SecurityPeter Baylies
 
Juggling Java EE with Enterprise Apache Maven
Juggling Java EE with Enterprise Apache MavenJuggling Java EE with Enterprise Apache Maven
Juggling Java EE with Enterprise Apache Mavenelliando dias
 
Microsoft Azure Virtual Machine
Microsoft Azure Virtual MachineMicrosoft Azure Virtual Machine
Microsoft Azure Virtual MachineHelmy Mohamed
 

What's hot (20)

Flash And Dom
Flash And DomFlash And Dom
Flash And Dom
 
Speed Up That Site! - a guide to caching plugins
Speed Up That Site! - a guide to caching pluginsSpeed Up That Site! - a guide to caching plugins
Speed Up That Site! - a guide to caching plugins
 
PG Day Us: Animations for Web & Hybrid
PG Day Us: Animations for Web & HybridPG Day Us: Animations for Web & Hybrid
PG Day Us: Animations for Web & Hybrid
 
Optimizing WordPress - WordPress SF Meetup April 2012
Optimizing WordPress -  WordPress SF Meetup April 2012Optimizing WordPress -  WordPress SF Meetup April 2012
Optimizing WordPress - WordPress SF Meetup April 2012
 
Ithemes presentation
Ithemes presentationIthemes presentation
Ithemes presentation
 
10 common cf server challenges
10 common cf server challenges10 common cf server challenges
10 common cf server challenges
 
Speeding Up WordPress sites
Speeding Up WordPress sitesSpeeding Up WordPress sites
Speeding Up WordPress sites
 
Battling the WSOD - A Tech Support Tale
Battling the WSOD - A Tech Support TaleBattling the WSOD - A Tech Support Tale
Battling the WSOD - A Tech Support Tale
 
BP-6 Repository Customization Best Practices
BP-6 Repository Customization Best PracticesBP-6 Repository Customization Best Practices
BP-6 Repository Customization Best Practices
 
iOS Media APIs (MobiDevDay Detroit, May 2013)
iOS Media APIs (MobiDevDay Detroit, May 2013)iOS Media APIs (MobiDevDay Detroit, May 2013)
iOS Media APIs (MobiDevDay Detroit, May 2013)
 
Standardizing and Managing Your Infrastructure - MOSC 2011
Standardizing and Managing Your Infrastructure - MOSC 2011Standardizing and Managing Your Infrastructure - MOSC 2011
Standardizing and Managing Your Infrastructure - MOSC 2011
 
Rails Asset Pipeline - What, Why, Tips, Do's and Dont's
Rails Asset Pipeline - What, Why, Tips, Do's and Dont'sRails Asset Pipeline - What, Why, Tips, Do's and Dont's
Rails Asset Pipeline - What, Why, Tips, Do's and Dont's
 
HTML5 and CSS3 Techniques You Can Use Today
HTML5 and CSS3 Techniques You Can Use TodayHTML5 and CSS3 Techniques You Can Use Today
HTML5 and CSS3 Techniques You Can Use Today
 
EasyEngine - Command-Line tool to manage WordPress Sites on Nginx
EasyEngine - Command-Line tool to manage WordPress Sites on NginxEasyEngine - Command-Line tool to manage WordPress Sites on Nginx
EasyEngine - Command-Line tool to manage WordPress Sites on Nginx
 
What is NetDevOps? How? Leslie Carr PuppetConf 2015
What is NetDevOps? How? Leslie Carr PuppetConf 2015What is NetDevOps? How? Leslie Carr PuppetConf 2015
What is NetDevOps? How? Leslie Carr PuppetConf 2015
 
WebGL Camp 4 - A3 3D Engine
WebGL Camp 4 - A3 3D EngineWebGL Camp 4 - A3 3D Engine
WebGL Camp 4 - A3 3D Engine
 
WordPress Server Security
WordPress Server SecurityWordPress Server Security
WordPress Server Security
 
Locking Down CF Servers
Locking Down CF ServersLocking Down CF Servers
Locking Down CF Servers
 
Juggling Java EE with Enterprise Apache Maven
Juggling Java EE with Enterprise Apache MavenJuggling Java EE with Enterprise Apache Maven
Juggling Java EE with Enterprise Apache Maven
 
Microsoft Azure Virtual Machine
Microsoft Azure Virtual MachineMicrosoft Azure Virtual Machine
Microsoft Azure Virtual Machine
 

Similar to HTML5 Video Presentation

Html5 Open Video Tutorial
Html5 Open Video TutorialHtml5 Open Video Tutorial
Html5 Open Video TutorialSilvia Pfeiffer
 
HTML5 Video Right Now
HTML5 Video Right NowHTML5 Video Right Now
HTML5 Video Right NowCarlos Araya
 
Upgrade to HTML5 Video
Upgrade to HTML5 VideoUpgrade to HTML5 Video
Upgrade to HTML5 Videosteveheffernan
 
HTML5 Video Player - HTML5 Dev Conf 2012
HTML5 Video Player - HTML5 Dev Conf 2012HTML5 Video Player - HTML5 Dev Conf 2012
HTML5 Video Player - HTML5 Dev Conf 2012steveheffernan
 
HTML5 Video for WordPress
HTML5 Video for WordPressHTML5 Video for WordPress
HTML5 Video for WordPresssteveheffernan
 
Responsive Videos, mehr oder weniger
Responsive Videos, mehr oder wenigerResponsive Videos, mehr oder weniger
Responsive Videos, mehr oder wenigerWalter Ebert
 
Silverlight Wireshark Analysis
Silverlight Wireshark AnalysisSilverlight Wireshark Analysis
Silverlight Wireshark AnalysisYoss Cohen
 
Html5 - audio and video tags
Html5 - audio and video tagsHtml5 - audio and video tags
Html5 - audio and video tagsRae Allen
 
HTML5 video & Amazon elastic transcoder - FCIP August 2014
HTML5 video & Amazon elastic transcoder - FCIP August 2014HTML5 video & Amazon elastic transcoder - FCIP August 2014
HTML5 video & Amazon elastic transcoder - FCIP August 2014RZasadzinski
 
[edUiconf] HTML5 does all that… and i can haz cheeseburger? You bet!
[edUiconf] HTML5 does all that… and i can haz cheeseburger? You bet![edUiconf] HTML5 does all that… and i can haz cheeseburger? You bet!
[edUiconf] HTML5 does all that… and i can haz cheeseburger? You bet!Christopher Schmitt
 
Multimedia on the web - HTML5 video and audio
Multimedia on the web - HTML5 video and audioMultimedia on the web - HTML5 video and audio
Multimedia on the web - HTML5 video and audioChristian Heilmann
 
JS Days HTML5 Flash and the Battle for Faster Cat Videos
JS Days HTML5 Flash and the Battle for Faster Cat VideosJS Days HTML5 Flash and the Battle for Faster Cat Videos
JS Days HTML5 Flash and the Battle for Faster Cat VideosGreg Schechter
 
HTML5 History & Features
HTML5 History & FeaturesHTML5 History & Features
HTML5 History & FeaturesDave Ross
 
HTML5 Multimedia: where we are, where we're going
HTML5 Multimedia: where we are, where we're goingHTML5 Multimedia: where we are, where we're going
HTML5 Multimedia: where we are, where we're goingbrucelawson
 
Adobe HTTP Streaming
Adobe HTTP StreamingAdobe HTTP Streaming
Adobe HTTP StreamingYoss Cohen
 
StoryCode Immersion #5 - Popcorn.JS Deep Dive
StoryCode Immersion #5 - Popcorn.JS Deep DiveStoryCode Immersion #5 - Popcorn.JS Deep Dive
StoryCode Immersion #5 - Popcorn.JS Deep Divestorycode
 
HTML5 multimedia - browser-native video and audio - DevUp HTML5 / Barcelona /...
HTML5 multimedia - browser-native video and audio - DevUp HTML5 / Barcelona /...HTML5 multimedia - browser-native video and audio - DevUp HTML5 / Barcelona /...
HTML5 multimedia - browser-native video and audio - DevUp HTML5 / Barcelona /...Patrick Lauke
 
HTML5 Multimedia Support
HTML5 Multimedia SupportHTML5 Multimedia Support
HTML5 Multimedia SupportHenry Osborne
 

Similar to HTML5 Video Presentation (20)

Looking into HTML5 + CSS3
Looking into HTML5 + CSS3Looking into HTML5 + CSS3
Looking into HTML5 + CSS3
 
Html5 Open Video Tutorial
Html5 Open Video TutorialHtml5 Open Video Tutorial
Html5 Open Video Tutorial
 
HTML5 Video Right Now
HTML5 Video Right NowHTML5 Video Right Now
HTML5 Video Right Now
 
Upgrade to HTML5 Video
Upgrade to HTML5 VideoUpgrade to HTML5 Video
Upgrade to HTML5 Video
 
HTML5 Video Player - HTML5 Dev Conf 2012
HTML5 Video Player - HTML5 Dev Conf 2012HTML5 Video Player - HTML5 Dev Conf 2012
HTML5 Video Player - HTML5 Dev Conf 2012
 
HTML5 Video for WordPress
HTML5 Video for WordPressHTML5 Video for WordPress
HTML5 Video for WordPress
 
Responsive Videos, mehr oder weniger
Responsive Videos, mehr oder wenigerResponsive Videos, mehr oder weniger
Responsive Videos, mehr oder weniger
 
Silverlight Wireshark Analysis
Silverlight Wireshark AnalysisSilverlight Wireshark Analysis
Silverlight Wireshark Analysis
 
Web Apps
Web AppsWeb Apps
Web Apps
 
Html5 - audio and video tags
Html5 - audio and video tagsHtml5 - audio and video tags
Html5 - audio and video tags
 
HTML5 video & Amazon elastic transcoder - FCIP August 2014
HTML5 video & Amazon elastic transcoder - FCIP August 2014HTML5 video & Amazon elastic transcoder - FCIP August 2014
HTML5 video & Amazon elastic transcoder - FCIP August 2014
 
[edUiconf] HTML5 does all that… and i can haz cheeseburger? You bet!
[edUiconf] HTML5 does all that… and i can haz cheeseburger? You bet![edUiconf] HTML5 does all that… and i can haz cheeseburger? You bet!
[edUiconf] HTML5 does all that… and i can haz cheeseburger? You bet!
 
Multimedia on the web - HTML5 video and audio
Multimedia on the web - HTML5 video and audioMultimedia on the web - HTML5 video and audio
Multimedia on the web - HTML5 video and audio
 
JS Days HTML5 Flash and the Battle for Faster Cat Videos
JS Days HTML5 Flash and the Battle for Faster Cat VideosJS Days HTML5 Flash and the Battle for Faster Cat Videos
JS Days HTML5 Flash and the Battle for Faster Cat Videos
 
HTML5 History & Features
HTML5 History & FeaturesHTML5 History & Features
HTML5 History & Features
 
HTML5 Multimedia: where we are, where we're going
HTML5 Multimedia: where we are, where we're goingHTML5 Multimedia: where we are, where we're going
HTML5 Multimedia: where we are, where we're going
 
Adobe HTTP Streaming
Adobe HTTP StreamingAdobe HTTP Streaming
Adobe HTTP Streaming
 
StoryCode Immersion #5 - Popcorn.JS Deep Dive
StoryCode Immersion #5 - Popcorn.JS Deep DiveStoryCode Immersion #5 - Popcorn.JS Deep Dive
StoryCode Immersion #5 - Popcorn.JS Deep Dive
 
HTML5 multimedia - browser-native video and audio - DevUp HTML5 / Barcelona /...
HTML5 multimedia - browser-native video and audio - DevUp HTML5 / Barcelona /...HTML5 multimedia - browser-native video and audio - DevUp HTML5 / Barcelona /...
HTML5 multimedia - browser-native video and audio - DevUp HTML5 / Barcelona /...
 
HTML5 Multimedia Support
HTML5 Multimedia SupportHTML5 Multimedia Support
HTML5 Multimedia Support
 

HTML5 Video Presentation

  • 1. <video> will be your friend Joy Through “Standards”
  • 2. Overview • What is the video tag • Why you can’t use it • Why you’ll use it anyways
  • 3. What is the Video Tag • <video> makes video a first class citizen • Part of the HTML5 specification • As simple as <img>
  • 4. Why You Can’t Use it • Compatibility • User Experience
  • 5. Compatibility • <video> standard does not mandate a format • Just like the <img> tag
  • 6. Two Primary Formats Theora H.264
  • 7. Two Primary Formats Theora : ogg H.264 : mov/mp4/m4v
  • 8.
  • 12. Licensing • MPEG-LA manages a patent pool • Costs for Encoding, Decoding and potentially performance
  • 13. Licensing • MPEG-LA manages a patent pool • Costs for Encoding, Decoding and potentially performance
  • 14. What if you’re Firefox? • Hard to pay a license cost • Need cross platform support • Values
  • 15. What if you’re Firefox? • Hard to pay a license cost • Need cross platform support Software Patents • Values make me sad
  • 16. OGG to the Rescue? • On2 open sourced VP3, released patent claims • Xiph.org group turns it into Theora • Continues to enhance VP3
  • 17. But... • Technically inferior • Submarine patents? • Hardware support
  • 18. What to do? • Train is leaving the station • IE9, Chrome, Safari, iEverything are on board with H.264 • Content producers are on board • Fallback options exist
  • 19. What to do? • Train is leaving the station • IE9, Chrome, Safari, iEverything are on board with H.264 • Content producers are on board • Fallback options exist
  • 20. Fallback example <video> <source src=“video.mp4” type= “video/mp4” /> <source src= “video.ogg” type= “video/ogg” /> <object width="425" height="350"><param name="movie" value="myplayer.swf" /> <param name= “flashvars” value= “file=video.mp4” /> <embed src="myplayer.swf" flashvars= “file=video.mp4” type="application/x-shockwave-flash" width="425" height="350"> </ embed> </object> </video>
  • 21. Fallback example <video> <source src=“video.mp4” type= “video/mp4” /> <source src= “video.ogg” type= “video/ogg” /> <object width="425" height="350"><param name="movie" value="myplayer.swf" /> <param name= “flashvars” value= “file=video.mp4” /> <embed src="myplayer.swf" flashvars= “file=video.mp4” type="application/x-shockwave-flash" width="425" height="350"> </ embed> </object> </video>
  • 22. Fallback example <video> <source src=“video.mp4” type= “video/mp4” /> <source src= “video.ogg” type= “video/ogg” /> <object width="425" height="350"><param name="movie" value="myplayer.swf" /> <param name= “flashvars” value= “file=video.mp4” /> <embed src="myplayer.swf" flashvars= “file=video.mp4” type="application/x-shockwave-flash" width="425" height="350"> </ embed> </object> </video>
  • 23. Fallback example <video> <source src=“video.mp4” type= “video/mp4” /> <source src= “video.ogg” type= “video/ogg” /> <object width="425" height="350"><param name="movie" value="myplayer.swf" /> <param name= “flashvars” value= “file=video.mp4” /> <embed src="myplayer.swf" flashvars= “file=video.mp4” type="application/x-shockwave-flash" width="425" height="350"> </ embed> </object> </video>
  • 24. Fallback example <video> <source src=“video.mp4” type= “video/mp4” /> <source src= “video.ogg” type= “video/ogg” /> <object width="425" height="350"><param name="movie" value="myplayer.swf" /> <param name= “flashvars” value= “file=video.mp4” /> <embed src="myplayer.swf" flashvars= “file=video.mp4” type="application/x-shockwave-flash" width="425" height="350"> </ embed> </object> </video>
  • 25. Why you want to use it • Video can be a rich part of design • Hardware acceleration • Cross platform
  • 26. Let’s build a player
  • 27. Video Tag Attributes preload autoplay controls (autobuffer) height loop poster src width
  • 28. Video Tag Attributes preload autoplay controls (autobuffer) height loop poster src width
  • 29. Video Tag Attributes preload autoplay controls (autobuffer) height loop poster src width
  • 30. Video Tag Attributes preload autoplay controls (autobuffer) height loop poster src width
  • 31. Javascript Attributes currentTime startTime duration paused ended seekable buffered played volume muted
  • 32. Javascript Events progress play pause playing canplay canplaythrough ended timeupdate
  • 35. Caveats • Some mobile platforms won’t run your JS • Hardware accelerated platforms maybe limited to one video • Make sure your server supports file resume
  • 36. Summary • <video> is coming • It’s A Good Thing • There are premade players today - jilion.com/sublime • Great javascript helpers - html5video.org

Editor's Notes