Giter Site home page Giter Site logo

html5-media-houston-fe-080618's Introduction

Working with HTML5 Media

Problem Statement

The internet is a highly interactive environment. As HTML authors, we might be given a media file and be told to put it on the internet. How can we display media inside of a web page and make sure that it's viewable to the most people possible on the most devices? That will be the focus of this lesson.

Overview

  1. Explain the history of media on the web
  2. Demonstrate how to embed audio elements in HTML5
  3. Demonstrate how to embed video elements in HTML5
  4. Link to audio and video converters

Explain The History Of Media On The Web

In the early days of HTML, media elements were more difficult to use. They would often require the user to download and install a plugin. Media plugins you might recall were Macromedia Flash, Adobe Shockwave, and Java. This commercial plugin approach brings about a number of problems.

  • It is seriously annoying to have to download all these plugins
  • The site is unusable while you wait for a plugin to load
  • The site is unusable without the plugin
  • The site is unusable for those using assistive devices
  • Bad guys could market a viral site which required the installation of a plugin. Plugin installation gives access to the operating system where they could install malware
  • If a company's plugin became dominant, there would be a splitting of the web into a commercial thing versus the non-commercial thing ("The Internet, powered by Adobe Flash")

For these reasons and others, the W3C added media support in HTML5.

Demonstrate How to Embed Audio Elements in HTML5

To include audio in a website, use the <audio> element. Inside the element, we provide <source> elements whose src attributes point to a file on the server and whose type attributes specify what type of media it is.

Let's take a deeper look at type. The type name is the "MIME standard" for the filetype. MDN provides a long list of MIME types. A few examples are text/html, text/css, images/jpeg.

You might recall that files fit into two big buckets: binary and text. Sometimes we need to be more specific within those groups. We want to say this is a text file, but also HTML (text/html). Or we want to say this is a binary file, but also an MPEG movie (video/mpeg). A MIME type is a way to note, for the computer, exactly what type of file is present. It will help the computer find the right player. It's also a bit more precise than a simple file extension (.docx or .img).

To pull it all together, the type attribute should be set to the "MIME type" for the media pointed to by the src attribute for each <source> element.

Let's look at an example:

<audio controls>
  <source src="purrr.mp3" type="audio/mp3">
  <source src="purrr.ogg" type="audio/ogg">
  <p>Sorry your browser doesn't support HTML5 Audio! Please <a href="http://browsehappy.com/?locale=en">upgrade your browser</a>.</p>
</audio>

On the first line we open the <audio> tag with the controls attribute present. This is required to display the audio controls to start and pause playback, adjust the recording's volume, etc. The presence of the controls attribute name itself is sufficient, no other properties are needed. There are optional attributes you can provide such as autoplay and loop. These start the audio on page load and repeat the audio after it ends. The documentation lists all available options.

In lines two and three, we provide two different source files for playback. If the browser does not recognize the first file type, it will ignore it and move on to the next. If neither of the formats are supported it will instead display the paragraph on line four. If the browser is able to play one of the source files it will ignore any other code below until it reaches the closing </audio> tag.

Demonstrate How To Embed Video Elements in HTML5

Embedding a video is very similar to embedding audio. This can be done by including the <video> tag. Inside the video tag are source tags that point to the location of various video file formats and specify their MIME types.

<video controls>
  <source src="real-estate.mp4" type="video/mp4">
  <source src="real-estate.ogv" type="video/ogg">
  <p>Sorry your browser doesn't support HTML5 Video! Please <a href="http://browsehappy.com/?locale=en">upgrade your browser</a>.</p>
</video>

Like <audio>, we will open the <video> tag with the controls attribute. For the full list of accepted attributes, you can check the MDN documentation.

On lines two and three we provide two different source files for playback. If the browser does not recognize the first filetype it will ignore it and move on to the next just the same as it does for the audio element. If neither of the formats are supported it will display the paragraph instead on line four. If the browser is able to play one of the source files, it will. The others sources within the <video> tag will be ignored.

Link to Audio and Video Converters

There are a number of free tools that will convert audio files when needed. MediaHuman - Free Audio Converter and Audacity - Free Audio Editor/Converter are two we recommend. For a comparison of support levels for various players, see JavaScript HTML5 Video Player Comparison

Conclusion

With audio and video tags, the W3C gives us an open way to ensure that media remain accessible and open to all platforms.

html5-media-houston-fe-080618's People

Contributors

drakeltheryuujin avatar annjohn avatar gj avatar jongrover avatar joshuabamboo avatar sarogers avatar dshiling avatar hasarali avatar ihollander avatar samegel avatar sgharms avatar allisonkadel avatar blazeiburgess avatar bruugey avatar jonbf avatar mjdele avatar

Watchers

Mar avatar Kaitlin Vignali avatar  avatar  avatar Joe Cardarelli avatar The Learn Team avatar  avatar Liz Burton avatar Matt avatar Alex Griffith avatar  avatar Amanda D'Avria avatar  avatar Ahmed avatar Nicole Kroese  avatar Dominique De León avatar  avatar Vicki Aubin avatar Maxwell Benton avatar  avatar Blake Long avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.