HTML5 introduced the <audio> and <video> elements, allowing developers to embed multimedia directly into web pages without requiring external plugins like Flash.
These elements provide built-in controls, flexible APIs, and support for multiple file formats.
In this tutorial, you’ll learn how to:
- Use the <audio> and <video> elements.
- Add controls and attributes.
- Work with multiple file formats.
- Use JavaScript to control media playback.
- Customize media players with CSS and JavaScript.
1. The <audio> Element
The <audio> element embeds audio content into a webpage.
Example 1: Basic Audio Player
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Basic Audio Player</title> </head> <body> <h1>Basic Audio Example</h1> <audio controls> <source src="example-audio.mp3" type="audio/mpeg"> <source src="example-audio.ogg" type="audio/ogg"> Your browser does not support the audio element. </audio> </body> </html>
Explanation:
- <audio>: Embeds audio content.
- controls: Displays playback controls (play, pause, volume).
- <source>: Specifies the audio file and its format.
2. The <video> Element
The <video> element embeds video content into a webpage.
Example 2: Basic Video Player
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Basic Video Player</title> </head> <body> <h1>Basic Video Example</h1> <video controls width="640" height="360"> <source src="example-video.mp4" type="video/mp4"> <source src="example-video.webm" type="video/webm"> Your browser does not support the video element. </video> </body> </html>
Explanation:
- <video>: Embeds video content.
- controls: Adds playback controls.
- width and height: Set the dimensions of the video.
3. Attributes for Audio and Video
You can customize audio and video elements using attributes.
Common Attributes:
Attribute | Description |
---|---|
controls | Adds default playback controls. |
autoplay | Automatically starts playback. |
loop | Loops the media playback. |
muted | Starts playback with the volume muted. |
preload | Controls how/when the file is loaded (auto, metadata, none). |
Example 3: Media with Autoplay, Loop, and Muted
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Media Attributes</title> </head> <body> <h1>Audio and Video with Attributes</h1> <!-- Autoplay and Loop Audio --> <audio autoplay loop> <source src="background-music.mp3" type="audio/mpeg"> Your browser does not support the audio element. </audio> <br><br> <!-- Muted Video with Loop --> <video autoplay loop muted width="640" height="360"> <source src="looping-video.mp4" type="video/mp4"> Your browser does not support the video element. </video> </body> </html>
4. Working with Multiple Formats
Different browsers support different formats. Use multiple <source> elements to ensure compatibility.
Common Formats:
Media Type | Formats Supported |
---|---|
Audio | MP3 (audio/mpeg), OGG (audio/ogg), WAV (audio/wav) |
Video | MP4 (video/mp4), WebM (video/webm), OGG (video/ogg) |
5. Using JavaScript to Control Media
The Audio and Video elements expose methods and properties for programmatic control.
Example 4: JavaScript Control for Audio
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>JavaScript Audio Control</title> </head> <body> <h1>Audio Control Example</h1> <audio id="myAudio" src="example-audio.mp3"></audio> <button onclick="playAudio()">Play</button> <button onclick="pauseAudio()">Pause</button> <button onclick="stopAudio()">Stop</button> <script> const audio = document.getElementById("myAudio"); function playAudio() { audio.play(); } function pauseAudio() { audio.pause(); } function stopAudio() { audio.pause(); audio.currentTime = 0; // Reset to the start } </script> </body> </html>
Explanation:
- play(): Starts playback.
- pause(): Pauses playback.
- currentTime: Sets the playback position.
Example 5: JavaScript Control for Video
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>JavaScript Video Control</title> </head> <body> <h1>Video Control Example</h1> <video id="myVideo" width="640" height="360" controls> <source src="example-video.mp4" type="video/mp4"> </video> <br> <button onclick="playVideo()">Play</button> <button onclick="pauseVideo()">Pause</button> <button onclick="setVolume(0.5)">Set Volume to 50%</button> <script> const video = document.getElementById("myVideo"); function playVideo() { video.play(); } function pauseVideo() { video.pause(); } function setVolume(value) { video.volume = value; // Value ranges from 0.0 to 1.0 } </script> </body> </html>
Explanation:
- volume: Adjusts the audio volume (0.0 to 1.0).
6. Customizing Media Players
You can hide the default controls and create your own media player using CSS and JavaScript.
Example 6: Custom Media Player
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Custom Media Player</title> <style> .custom-controls { margin-top: 10px; } .custom-controls button { margin: 0 5px; } </style> </head> <body> <h1>Custom Media Player</h1> <video id="customVideo" width="640" height="360" src="example-video.mp4"></video> <div class="custom-controls"> <button onclick="playCustom()">Play</button> <button onclick="pauseCustom()">Pause</button> <button onclick="restartCustom()">Restart</button> </div> <script> const customVideo = document.getElementById("customVideo"); function playCustom() { customVideo.play(); } function pauseCustom() { customVideo.pause(); } function restartCustom() { customVideo.currentTime = 0; customVideo.play(); } </script> </body> </html>
7. Streaming Media
For live or on-demand streaming, use services like HLS (HTTP Live Streaming) or DASH (Dynamic Adaptive Streaming over HTTP). These require additional libraries or server setups.
8. Accessibility Tips
- Provide captions using <track>:
<video controls> <source src="example-video.mp4" type="video/mp4"> <track src="subtitles.vtt" kind="subtitles" srclang="en" label="English"> </video>
- Always include fallback text inside <audio> or <video> for unsupported browsers.
Conclusion
In this tutorial, you learned:
- How to use the <audio> and <video> elements.
- Common attributes like controls, autoplay, and loop.
- How to programmatically control media with JavaScript.
- How to customize a media player using CSS and JavaScript.
HTML5’s <audio> and <video> elements simplify embedding multimedia content, providing a rich user experience for modern web applications.