HTML 5
<video>
   <future answer=”maybe”>
   <darkside unknown=”1”>
</video>
@jimjeffers
blog:
DontTrustThisGuy.Com
company:
SumoCreations.com
The Flash Player
<video> Support
<video> Formats
Workflow Wins!
Example
GOAL OF THIS TALK:
Understand the present state
of <video> and when, why, and
how you’d want to implement
the technology.
Flash Player
* Closed Format
* Powerful
* Everyone Has It
Market Penetration
 8                                                                      99%
 9                                                                     98.9%
10                                                                    94.7%
 5                              31.1%
flash penetration:
http://www.adobe.com/products/player_census/flashplayer/

html5 video penetration:
http://gs.statcounter.com/#browser_version-ww-monthly-200812-201001
HTML 5
* Open/Closed Format
* Powerful
* Not Ubiquitious
Works on...
Firefox 3.5+
Chrome 3.0+
Safari 3.1+
Opera 10.5+
and on...
iPhone
iPod Touch
iPad
Android OS
<video>
is only going to become more
ubiquitious in the future and
is already relevant for playing
video on mobile devices.
Format Wars
 * h.264 (closed)
 * Ogg Vorbis (open)
HTML5 Video
Supports Any
Media.
It’s the browser that dictates
which formats are played.
DiveIntoHTML5
for a detailed explanation
on the formats that can be
utilized in HTML5 and more...
http://diveintohtml5.org/video.html
HTML 5
Workflow Wins
Basic Video Embed
                                  use the browser’s
                                      native video controls


<video width="480" height="380" controls>
  <source src="trolololololololol.ogv"
    type='video/ogg; codecs="theora, vorbis"'>
  <source src="trolololololololol.mp4"
    type='video/mp4; codecs="avc1.42E01E, mp4a.40.2"'>
</video>
Video With Player UI Expressed
in HTML Markup
<div id="player">
  <video width="480" height="380" class="ecard">
    <source src="trolololololololol.ogv"
       type='video/ogg; codecs="theora, vorbis"'>
    <source src="trolololololololol.mp4"
       type='video/mp4; codecs="avc1.42E01E, mp4a.40.2"'>
  </video>
  <nav class="player_controls">
    <a href="#" class="play_button">Play<span></span></a>
    <a href="#" class="mute_button">Mute<span></span></a>
    <progress value="0" class="play_progress">
         <span></span>
    </progress>
    <progress value="0" class="load_progress">
         <span></span>
    </progress>
  </nav>
</div>
CSS to Style Player UI
/* =CONTROLS
   ------------------------------------------------------ */
   .player_controls {
      bottom: -20px;
      height: 70px;
      left: 0;
      position: absolute;
      width: 480px;
      z-index: 10;
   }

/* =PLAY/MUTE BUTTONS
   ------------------------------------------------------ */
   .player_controls a.play_button {
      bottom: 0;
      left: -38px;
   }
   .player_controls a.mute_button {
      bottom: 0;
      right: -38px;
   }
Javascript to Control Video



$(’video’).get(0).play();
                                       e ll the
                            o uld t                t
                   t his w                 e lemen
                                v ideo
                        first                 o
                                   p age t
                      on  your                .
                                    p laying
                         st art
Javascript to Control Video
var _MEDIA = $(’#player video.ecard’).get(0);                        get the
                                                                        video element...
$(’.play_button’).click(togglePlay);
$(’.mute_button’).click(toggleMute);

function togglePlay(e) {
 if(_MEDIA.paused) {                               add some simple
    _MEDIA.play();                                   event listeners....
 } else {                  if paused play
    _MEDIA.pause();           otherwise pause...
 }
 return false;
};
function toggleMute(e) {
 if(_MEDIA.volume > 0) {
    _MEDIA.volume = 0;
 } else {
    _MEDIA.volume = 1;              if it has volume mute
 }                                     otherwise turn on volume...
 return false;
};
<video> methods & attributes
var video = $(’video’).get(0);

video.play();
video.pause();
video.paused;        // Returns true if video is paused.
video.ended;         // Returns true if video is over.

video.volume;        // Returns volume value (between 0-1)
video.volume=0.5;    // Sets volume value (between 0-1)

video.currentTime;   // Current point of time in the video.
video.length;        // Returns the length in seconds.

video.seekable;     // Returns true if supports seeking.
video.playbackRate; // Allows you to rewind/fastforward.
To see all of the <video>
methods & attributes
be sure to take a look at the
whatwg working draft:
http://www.whatwg.org/specs/web-apps/current-work/multipage/video.html



or just use this link:
http://bit.ly/2nkxD
Your standard
HTML/CSS/JS
workflow handles
everything.
In Flash we do
all of the legwork to
build things that are
trivial in the DOM.
Time for an
Example
Video player that loads and
displays cuepoints and
messages from a datasource.

Skip to demo now if possible.
http://sumocreations.com/demo/rattlebox/player.html
Flash Implementation
                                        Viewer.as
                                           src.data
 <html>   js   css    SWF     AS3            Service
                               AS3         src.events
                                AS3
                                  AS3        AssetEvent
                                             CoordinatorEvent
                                             CuepointEvent
                                             LayerEvent
                      <xml>                  MessageQueueEvent
                                             PlayerControlEvent
                                             WarningEvent
                                           src.time
                                             Coordinator
                                             Cuepoint
                                             MessageQueue
! AS3 Stack has 20 custom classes.         src.ui
                                             Layer
                                             LoadingBar
! Still depends on HTML/JS/CSS               Message
                                             Layer
                                             OffensiveWarning

40+ Dev Hours                                PlayerControls
                                           src.video
                                             Asset
                                             Client
HTML5 Implementation
<html>   js   css




4 Dev Hours
Cuepoint Data In Flash
<?xml version="1.0" encoding="UTF-8"?>
<card offensive="false" version="2.0" id="1156">
  <title>In Your Honor We'll Be Dancing</title>
  <library>
    <asset path="media/cards/1156/pickup.flv" duration="50.721" id="1156"/>
  </library>
  <timeline>
    <frame asset="1156">
      <cuepoints>
        <cuepoint duration="3.5" fade="" time="0.3">
          <layer type="fill">
             <color>#000000</color>
          </layer>
          <layer type="message">
             <content>
               <![CDATA[In your honor we'll be dancing...]]>
             </content>
          </layer>
        </cuepoint>
        <cuepoint duration="20.0" fade="" time="46.0">
          <layer type="fill">
             <color>#000000</color>
          </layer>
          <layer type="message">
             <content>
               <![CDATA[Your personal message here.]]>
             </content>
          </layer>
        </cuepoint>
      </cuepoints>
    </frame>
  </timeline>
</card>
Cuepoint Data in HTML5
<ol class="cuepoints">
  <li id="cuepoint_1" class="cuepoint"
      data-time="0.3" data-duration="3.5">
    <p class="message">In your honor we'll be dancing...</p>
  </li>
  <li id="cuepoint_2" class="cuepoint"
      data-time="46.0" data-duration="20">
    <p class="message">Your personal message here.</p>
  </li>
</ol>
Certain things which
may be complex in Flash
are trivial to implement
in HTML as the DOM
can do all of the
‘heavy lifting’ for you.
Both technologies still
have their purposes. It’s
important not to rally
behind technologies.
Use the right tool for the job
be it HTML5 or Flash.
Be sure to read:
The Cold War of The Web
http://www.alistapart.com/articles/flashstandards/
Do you guys have
any Questions?


the end

More Related Content

PDF
rqlite - replicating SQLite via Raft consensu
PPTX
ICT 10 2023-2024.pptx
PPTX
What Is Selenium? | Selenium Basics For Beginners | Introduction To Selenium ...
PDF
What is WebElement in Selenium | Web Elements & Element Locators | Edureka
PPTX
Presentation on Visual Studio
PPTX
Introduction to Javascript
PDF
MVVM & RxSwift
PDF
Basic Details of HTML and CSS.pdf
rqlite - replicating SQLite via Raft consensu
ICT 10 2023-2024.pptx
What Is Selenium? | Selenium Basics For Beginners | Introduction To Selenium ...
What is WebElement in Selenium | Web Elements & Element Locators | Edureka
Presentation on Visual Studio
Introduction to Javascript
MVVM & RxSwift
Basic Details of HTML and CSS.pdf

What's hot (20)

PDF
WordPress Security Presentation
PPTX
introduction to system administration
PPTX
PDF
Automation Testing using Selenium Webdriver
PPTX
THe Evolution of Web Design
PPT
Html Slide Part-1
PPTX
Web Development In 2018
PPTX
Web development
PDF
MacOS forensics and anti-forensics (DC Lviv 2019) presentation
PPTX
Introduction to Web development
PDF
Virtual Security Lab Setup - OWASP Broken Web Apps, Webgoat, & ZAP
PPTX
Window11
PDF
HTML CSS Basics
PPTX
Selenium Interview Questions and Answers | Selenium Tutorial | Selenium Train...
PPTX
How to Test for The OWASP Top Ten
PDF
Building Reusable SwiftUI Components
PPT
JavaScript - An Introduction
PPTX
Lessons-Learned-SwiftUI.pptx
PDF
Static Code Analysis
PPTX
NORMAS PARA EL BUEN USO DEL INTERNET
WordPress Security Presentation
introduction to system administration
Automation Testing using Selenium Webdriver
THe Evolution of Web Design
Html Slide Part-1
Web Development In 2018
Web development
MacOS forensics and anti-forensics (DC Lviv 2019) presentation
Introduction to Web development
Virtual Security Lab Setup - OWASP Broken Web Apps, Webgoat, & ZAP
Window11
HTML CSS Basics
Selenium Interview Questions and Answers | Selenium Tutorial | Selenium Train...
How to Test for The OWASP Top Ten
Building Reusable SwiftUI Components
JavaScript - An Introduction
Lessons-Learned-SwiftUI.pptx
Static Code Analysis
NORMAS PARA EL BUEN USO DEL INTERNET
Ad

Viewers also liked (12)

PPTX
Introduction to HTML5 & CSS3
KEY
HTML5 Video Player - HTML5 Dev Conf 2012
PPT
Building an HTML5 Video Player
PDF
HTML5: features with examples
PPTX
Html5 tutorial for beginners
PDF
Making the HTML5 Video element interactive
KEY
Video.js - How to build and HTML5 Video Player
PPTX
Use case document for boot fitting form
PPTX
html5.ppt
PPT
How to Embed a PowerPoint Presentation Using SlideShare
PDF
reveal.js 3.0.0
PDF
What is Artificial Intelligence | Artificial Intelligence Tutorial For Beginn...
Introduction to HTML5 & CSS3
HTML5 Video Player - HTML5 Dev Conf 2012
Building an HTML5 Video Player
HTML5: features with examples
Html5 tutorial for beginners
Making the HTML5 Video element interactive
Video.js - How to build and HTML5 Video Player
Use case document for boot fitting form
html5.ppt
How to Embed a PowerPoint Presentation Using SlideShare
reveal.js 3.0.0
What is Artificial Intelligence | Artificial Intelligence Tutorial For Beginn...
Ad

Similar to Building an HTML5 Video Player (20)

PDF
Mobile Web Video
KEY
HTML5와 모바일
PDF
Brave new world of HTML5
PDF
webinale2011_Chris Mills_Brave new world of HTML5Html5
PDF
HTML5 multimedia - browser-native video and audio - JSDay / Verona / 17 May 2012
PDF
audio, video and canvas in HTML5 - standards>next Manchester 29.09.2010
PDF
HTML5 APIs - native multimedia support and beyond - University of Leeds 05.05...
PDF
Html5 intro
PDF
HTML5 multimedia - browser-native video, audio and canvas - meet.js Summit / ...
PDF
Jsf2 html5-jazoon
PDF
Taking HTML5 video a step further
PDF
Craft 2019 - “The Upside Down” Of The Web - Video technologies
PDF
Leave No One Behind with HTML5 - FFWD.PRO, Croatia
KEY
Web Apps
KEY
Flash And Dom
PDF
Web Presentations, deck.js and Extensions
PDF
What you need to know bout html5
PPTX
Capture, record, clip, embed and play, search: video from newbie to ninja
PDF
[convergese] Adaptive Images in Responsive Web Design
KEY
前端概述
Mobile Web Video
HTML5와 모바일
Brave new world of HTML5
webinale2011_Chris Mills_Brave new world of HTML5Html5
HTML5 multimedia - browser-native video and audio - JSDay / Verona / 17 May 2012
audio, video and canvas in HTML5 - standards>next Manchester 29.09.2010
HTML5 APIs - native multimedia support and beyond - University of Leeds 05.05...
Html5 intro
HTML5 multimedia - browser-native video, audio and canvas - meet.js Summit / ...
Jsf2 html5-jazoon
Taking HTML5 video a step further
Craft 2019 - “The Upside Down” Of The Web - Video technologies
Leave No One Behind with HTML5 - FFWD.PRO, Croatia
Web Apps
Flash And Dom
Web Presentations, deck.js and Extensions
What you need to know bout html5
Capture, record, clip, embed and play, search: video from newbie to ninja
[convergese] Adaptive Images in Responsive Web Design
前端概述

Recently uploaded (20)

PDF
Advancing precision in air quality forecasting through machine learning integ...
PDF
Transform-Your-Streaming-Platform-with-AI-Driven-Quality-Engineering.pdf
PDF
Flame analysis and combustion estimation using large language and vision assi...
PDF
sbt 2.0: go big (Scala Days 2025 edition)
PDF
Statistics on Ai - sourced from AIPRM.pdf
PPT
Galois Field Theory of Risk: A Perspective, Protocol, and Mathematical Backgr...
PPTX
GROUP4NURSINGINFORMATICSREPORT-2 PRESENTATION
PPTX
Microsoft User Copilot Training Slide Deck
PDF
Improvisation in detection of pomegranate leaf disease using transfer learni...
PPTX
Module 1 Introduction to Web Programming .pptx
PDF
Comparative analysis of machine learning models for fake news detection in so...
PPTX
AI-driven Assurance Across Your End-to-end Network With ThousandEyes
PDF
AI.gov: A Trojan Horse in the Age of Artificial Intelligence
PDF
“A New Era of 3D Sensing: Transforming Industries and Creating Opportunities,...
PDF
sustainability-14-14877-v2.pddhzftheheeeee
PDF
CXOs-Are-you-still-doing-manual-DevOps-in-the-age-of-AI.pdf
PDF
giants, standing on the shoulders of - by Daniel Stenberg
PDF
Data Virtualization in Action: Scaling APIs and Apps with FME
PDF
Taming the Chaos: How to Turn Unstructured Data into Decisions
PDF
INTERSPEECH 2025 「Recent Advances and Future Directions in Voice Conversion」
Advancing precision in air quality forecasting through machine learning integ...
Transform-Your-Streaming-Platform-with-AI-Driven-Quality-Engineering.pdf
Flame analysis and combustion estimation using large language and vision assi...
sbt 2.0: go big (Scala Days 2025 edition)
Statistics on Ai - sourced from AIPRM.pdf
Galois Field Theory of Risk: A Perspective, Protocol, and Mathematical Backgr...
GROUP4NURSINGINFORMATICSREPORT-2 PRESENTATION
Microsoft User Copilot Training Slide Deck
Improvisation in detection of pomegranate leaf disease using transfer learni...
Module 1 Introduction to Web Programming .pptx
Comparative analysis of machine learning models for fake news detection in so...
AI-driven Assurance Across Your End-to-end Network With ThousandEyes
AI.gov: A Trojan Horse in the Age of Artificial Intelligence
“A New Era of 3D Sensing: Transforming Industries and Creating Opportunities,...
sustainability-14-14877-v2.pddhzftheheeeee
CXOs-Are-you-still-doing-manual-DevOps-in-the-age-of-AI.pdf
giants, standing on the shoulders of - by Daniel Stenberg
Data Virtualization in Action: Scaling APIs and Apps with FME
Taming the Chaos: How to Turn Unstructured Data into Decisions
INTERSPEECH 2025 「Recent Advances and Future Directions in Voice Conversion」

Building an HTML5 Video Player

  • 1. HTML 5 <video> <future answer=”maybe”> <darkside unknown=”1”> </video>
  • 3. The Flash Player <video> Support <video> Formats Workflow Wins! Example
  • 4. GOAL OF THIS TALK: Understand the present state of <video> and when, why, and how you’d want to implement the technology.
  • 5. Flash Player * Closed Format * Powerful * Everyone Has It
  • 6. Market Penetration 8 99% 9 98.9% 10 94.7% 5 31.1% flash penetration: http://www.adobe.com/products/player_census/flashplayer/ html5 video penetration: http://gs.statcounter.com/#browser_version-ww-monthly-200812-201001
  • 7. HTML 5 * Open/Closed Format * Powerful * Not Ubiquitious
  • 8. Works on... Firefox 3.5+ Chrome 3.0+ Safari 3.1+ Opera 10.5+
  • 10. <video> is only going to become more ubiquitious in the future and is already relevant for playing video on mobile devices.
  • 11. Format Wars * h.264 (closed) * Ogg Vorbis (open)
  • 12. HTML5 Video Supports Any Media. It’s the browser that dictates which formats are played.
  • 13. DiveIntoHTML5 for a detailed explanation on the formats that can be utilized in HTML5 and more... http://diveintohtml5.org/video.html
  • 15. Basic Video Embed use the browser’s native video controls <video width="480" height="380" controls> <source src="trolololololololol.ogv" type='video/ogg; codecs="theora, vorbis"'> <source src="trolololololololol.mp4" type='video/mp4; codecs="avc1.42E01E, mp4a.40.2"'> </video>
  • 16. Video With Player UI Expressed in HTML Markup <div id="player"> <video width="480" height="380" class="ecard"> <source src="trolololololololol.ogv" type='video/ogg; codecs="theora, vorbis"'> <source src="trolololololololol.mp4" type='video/mp4; codecs="avc1.42E01E, mp4a.40.2"'> </video> <nav class="player_controls"> <a href="#" class="play_button">Play<span></span></a> <a href="#" class="mute_button">Mute<span></span></a> <progress value="0" class="play_progress"> <span></span> </progress> <progress value="0" class="load_progress"> <span></span> </progress> </nav> </div>
  • 17. CSS to Style Player UI /* =CONTROLS ------------------------------------------------------ */ .player_controls { bottom: -20px; height: 70px; left: 0; position: absolute; width: 480px; z-index: 10; } /* =PLAY/MUTE BUTTONS ------------------------------------------------------ */ .player_controls a.play_button { bottom: 0; left: -38px; } .player_controls a.mute_button { bottom: 0; right: -38px; }
  • 18. Javascript to Control Video $(’video’).get(0).play(); e ll the o uld t t t his w e lemen v ideo first o p age t on your . p laying st art
  • 19. Javascript to Control Video var _MEDIA = $(’#player video.ecard’).get(0); get the video element... $(’.play_button’).click(togglePlay); $(’.mute_button’).click(toggleMute); function togglePlay(e) { if(_MEDIA.paused) { add some simple _MEDIA.play(); event listeners.... } else { if paused play _MEDIA.pause(); otherwise pause... } return false; }; function toggleMute(e) { if(_MEDIA.volume > 0) { _MEDIA.volume = 0; } else { _MEDIA.volume = 1; if it has volume mute } otherwise turn on volume... return false; };
  • 20. <video> methods & attributes var video = $(’video’).get(0); video.play(); video.pause(); video.paused; // Returns true if video is paused. video.ended; // Returns true if video is over. video.volume; // Returns volume value (between 0-1) video.volume=0.5; // Sets volume value (between 0-1) video.currentTime; // Current point of time in the video. video.length; // Returns the length in seconds. video.seekable; // Returns true if supports seeking. video.playbackRate; // Allows you to rewind/fastforward.
  • 21. To see all of the <video> methods & attributes be sure to take a look at the whatwg working draft: http://www.whatwg.org/specs/web-apps/current-work/multipage/video.html or just use this link: http://bit.ly/2nkxD
  • 23. In Flash we do all of the legwork to build things that are trivial in the DOM.
  • 25. Video player that loads and displays cuepoints and messages from a datasource. Skip to demo now if possible. http://sumocreations.com/demo/rattlebox/player.html
  • 26. Flash Implementation Viewer.as src.data <html> js css SWF AS3 Service AS3 src.events AS3 AS3 AssetEvent CoordinatorEvent CuepointEvent LayerEvent <xml> MessageQueueEvent PlayerControlEvent WarningEvent src.time Coordinator Cuepoint MessageQueue ! AS3 Stack has 20 custom classes. src.ui Layer LoadingBar ! Still depends on HTML/JS/CSS Message Layer OffensiveWarning 40+ Dev Hours PlayerControls src.video Asset Client
  • 27. HTML5 Implementation <html> js css 4 Dev Hours
  • 28. Cuepoint Data In Flash <?xml version="1.0" encoding="UTF-8"?> <card offensive="false" version="2.0" id="1156"> <title>In Your Honor We'll Be Dancing</title> <library> <asset path="media/cards/1156/pickup.flv" duration="50.721" id="1156"/> </library> <timeline> <frame asset="1156"> <cuepoints> <cuepoint duration="3.5" fade="" time="0.3"> <layer type="fill"> <color>#000000</color> </layer> <layer type="message"> <content> <![CDATA[In your honor we'll be dancing...]]> </content> </layer> </cuepoint> <cuepoint duration="20.0" fade="" time="46.0"> <layer type="fill"> <color>#000000</color> </layer> <layer type="message"> <content> <![CDATA[Your personal message here.]]> </content> </layer> </cuepoint> </cuepoints> </frame> </timeline> </card>
  • 29. Cuepoint Data in HTML5 <ol class="cuepoints"> <li id="cuepoint_1" class="cuepoint" data-time="0.3" data-duration="3.5"> <p class="message">In your honor we'll be dancing...</p> </li> <li id="cuepoint_2" class="cuepoint" data-time="46.0" data-duration="20"> <p class="message">Your personal message here.</p> </li> </ol>
  • 30. Certain things which may be complex in Flash are trivial to implement in HTML as the DOM can do all of the ‘heavy lifting’ for you.
  • 31. Both technologies still have their purposes. It’s important not to rally behind technologies. Use the right tool for the job be it HTML5 or Flash.
  • 32. Be sure to read: The Cold War of The Web http://www.alistapart.com/articles/flashstandards/
  • 33. Do you guys have any Questions? the end