Audio dan Video

Seperti yang Anda pelajari di modul gambar, HTML memungkinkan penyematan media ke dalam halaman web. Di bagian ini, kami membahas file audio dan video, termasuk cara menyematkannya, kontrol pengguna, menyediakan placeholder gambar statis untuk video Anda, serta praktik terbaik, termasuk membuat file audio dan video mudah diakses.

<audio> dan <video>

Elemen <video> dan <audio> dapat digunakan untuk menyematkan pemutar media secara langsung dengan atribut src atau dapat digunakan sebagai elemen penampung untuk serangkaian elemen <source>, yang masing-masing memberikan saran file src. Meskipun <video> dapat digunakan untuk menyematkan file audio, elemen <audio> lebih cocok untuk menyematkan file suara.

Tag <video> dan <audio> pembuka dapat berisi beberapa atribut lainnya termasuk controls, autoplay, loop, mute, preload, dan atribut global. Elemen <video> juga mendukung atribut height, width, dan poster.

<video src="videos/machines.webm" poster="images/machine.jpg" controls>
  <p>Watch <a href="https://youtube.com/link">video on Youtube</a></p>
</video>

Contoh <video> ini memiliki satu sumber dengan atribut src yang ditautkan ke sumber video. Atribut poster menyediakan gambar untuk ditampilkan saat video dimuat. Terakhir, atribut controls menyediakan kontrol video pengguna.

Konten penggantian disertakan di antara tag pembuka dan penutup. Jika agen pengguna tidak mendukung <video> (atau <audio>, konten ini akan ditampilkan. Tag </video> penutup diperlukan, meskipun tidak ada konten di antara keduanya (tetapi seharusnya selalu ada konten penggantian , kan?).

Jika tidak ada atribut src yang disertakan pada tag <video> atau <audio> pembuka, sertakan satu atau beberapa elemen <source>, masing-masing dengan atribut src ke file media. Contoh berikut mencakup tiga opsi file media, konten penggantian, serta subtitel bahasa Inggris dan Prancis antara tag pembuka dan penutup.

<video controls poster="images/machine.jpg">
  <source src="videos/machines.webm" type="video/webm">
  <source src="videos/machines.mp4" type="video/mp4">
  <source src="videos/machines.ogv" type="video/ogg">
  <track label="English" kind="subtitles" srclang="en" src="vtt/subtitles-en.vtt" default />
  <track label="Francais" kind="subtitles" srclang="fr" src="vtt/subtitles-fr.vtt" />
  <p>Watch <a href="https://youtube.com/link">video on Youtube</a></p>
</video>

Setiap turunan <source> menyertakan atribut src yang mengarah ke resource dan atribut type memberi tahu browser tentang jenis media file yang ditautkan. Hal ini mencegah browser mengambil file media yang tidak dapat didekode.

Dalam atribut type, Anda dapat menyertakan parameter codecs, yang menentukan secara persis cara encoding resource. Codec memberi Anda cara untuk menyertakan pengoptimalan media yang belum didukung di semua browser. Codec dipisahkan dari jenis media dengan titik koma. Misalnya, codec dapat ditulis menggunakan sintaksis intuitif, seperti <source src="videos/machines.webm" type="video/webm;codecs=vp8,vorbis"> yang menunjukkan bahwa file WebM berisi video VP8 dan audio vorbis. Codec juga mungkin lebih sulit diuraikan, seperti <source src="videos/machines.mp4" type="video/mp4; codecs=avc1.4d002a"> yang menunjukkan bahwa encoding MP4 adalah Advanced Video Coding Main Profile Level 4.2. Menjelaskan {i>syntax<i} ini di luar cakupan pelajaran ini. Jake Archibald memiliki postingan yang menjelaskan cara menentukan parameter codec untuk video AV1 jika Anda ingin mempelajari lebih lanjut.

Saat menampilkan video, secara default, frame pertama video ditampilkan sebagai gambar diam saat tersedia. Ini adalah sesuatu yang dapat dikontrol. Atribut poster memungkinkan sumber gambar ditampilkan saat video sedang didownload dan hingga diputar. Jika video diputar lalu dijeda, poster tidak akan ditampilkan ulang.

Pastikan untuk menentukan rasio lebar tinggi video Anda, karena saat video dimuat, perbedaan ukuran antara poster dan video akan menyebabkan perubahan posisi/geometri dan penggambaran ulang.

Selalu sertakan atribut controls boolean. Hal ini membuat kontrol pengguna terlihat, sehingga pengguna dapat mengontrol tingkat audio, membisukan audio sepenuhnya, dan memperluas video ke layar penuh. Menghilangkan controls akan menciptakan pengalaman pengguna yang buruk, terutama jika atribut autoplay boolean disertakan. Perlu diperhatikan bahwa beberapa browser tidak akan mematuhi perintah atribut autoplay jika atribut boolean muted dihilangkan karena memutar otomatis file media umumnya merupakan pengalaman pengguna yang buruk, meskipun jika dibisukan dan dengan kontrol yang terlihat.

Lagu

Di antara tag pembuka dan penutup yang diperlukan pada audio serta video, sertakan satu atau beberapa elemen <track> untuk menentukan trek teks dengan waktu. Contoh berikut menyertakan dua file <track>, yang menyediakan subtitel teks dengan waktu dalam bahasa Inggris dan Prancis.

<track label="English" kind="subtitles" srclang="en" src="vtt/subtitles-en.vtt" default />
<track label="Français" kind="subtitles" srclang="fr" lang="fr-fr" src="vtt/subtitles-fr.vtt" />

File trek, yang ditentukan dalam atribut src, harus dalam format WebVTT (.vtt). File harus berada di domain yang sama dengan dokumen HTML, kecuali jika atribut crossorigin disertakan.

Ada lima nilai yang disebutkan untuk atribut kind jalur: subtitles, captions, descriptions, chapters, dan metadata lainnya.

Menyertakan subtitles beserta atribut srclang untuk transkripsi dan terjemahan dialog. Nilai setiap atribut label ditampilkan sebagai opsi kepada pengguna. Konten opsi VTT yang dipilih ditampilkan di atas video. Gaya tampilan subtitel dapat disesuaikan dengan menargetkan ::cue/ ::cue().

Nilai kind="caption" harus dicadangkan untuk transkripsi dan terjemahan yang menyertakan efek suara dan informasi audio lain yang relevan. Fitur ini tidak hanya ditujukan bagi penonton tunarungu. Mungkin pengguna tidak dapat menemukan headphone-nya, jadi mereka mengaktifkan teks. Atau mungkin mereka belum memahami beberapa poin pembicaraan terakhir dari podcast favorit, jadi mereka ingin membaca transkrip untuk mengkonfirmasi pemahaman mereka. Memiliki cara alternatif untuk mengakses konten audio dan video sangatlah penting dan nyaman.

kind="description" digunakan untuk deskripsi teks konten visual dalam video bagi pengguna yang tidak dapat melihat video, baik mereka yang menggunakan sistem tanpa layar seperti Google Home atau Alexa, maupun tunanetra.

Menyediakan teks dan subtitel menggunakan format WebVTT membuat video dapat diakses oleh orang dengan gangguan pendengaran. Ingat, disabilitas adalah ketidakcocokan antara seseorang dan lingkungannya saat ini. Gangguan pendengaran dapat disebabkan karena pengguna berada di lingkungan yang bising, memiliki speaker yang rusak atau headphone yang rusak, atau karena pengguna mengalami kerusakan pendengaran atau tunarungu. Memastikan bahwa konten Anda dapat diakses akan membantu lebih banyak orang; hal ini membantu semua orang.

Pertimbangan video latar belakang

Tim pemasaran atau desain mungkin ingin agar situs Anda menyertakan video latar belakang. Umumnya, hal ini berarti pengguna menginginkan video yang dibisukan, diputar otomatis, dan berulang tanpa kontrol. HTML akan terlihat seperti ini:

<video autoplay loop muted poster="images/machine.jpg" role="none">
  <source src="videos/machines.webm" type="video/webm">
  <source src="videos/machines.mp4" type="video/mp4">
  <source src="videos/machines.ogv" type="video/ogg">
</video>

Video latar belakang tidak dapat diakses. Konten tidak boleh disampaikan melalui video latar belakang tanpa memberi pengguna kontrol penuh atas pemutaran dan akses ke semua teks. Karena hanya sekadar dekoratif, video ini menyertakan peran ARIA dari none dan menghilangkan konten penggantian apa pun. Untuk meningkatkan performa video yang selalu dibisukan, hapus trek audio dari sumber media Anda.

Jika video diputar selama lima detik atau kurang, panduan aksesibilitas tidak memerlukan mekanisme jeda, tetapi apa pun dengan atribut boolean loop akan berulang selamanya secara default, melebihi batas waktu lima detik ini, atau yang lainnya. Untuk memberikan pengalaman pengguna yang baik, selalu sertakan metode menjeda video. Hal ini paling mudah dilakukan dengan menyertakan controls.

Kontrol media kustom

Untuk menampilkan kontrol video atau audio kustom, bukan kontrol bawaan browser, sertakan atribut controls. Lalu, gunakan JavaScript untuk menambahkan kontrol media kustom dan menghapus atribut kontrol. Misalnya, Anda dapat menambahkan <button> yang mengubah status pemutaran file audio.

<button id="playPause" aria-controls="idOfAudio"
  data-pause-text="Pause audio"
  data-play-text="Play audio">Pause audio</button>

Contoh ini menyertakan tombol dengan atribut dataset yang berisi teks yang akan diperbarui saat pengunjung beralih antara status putar dan jeda. Atribut aria-controls disertakan dengan id elemen yang dikontrol oleh tombol; dalam hal ini, audio. Setiap tombol yang mengontrol audio memiliki pengendali peristiwa.

Untuk membuat kontrol yang disesuaikan, gunakan HTMLMediaElement.play() dan HTMLMediaElement.pause(). Saat mengalihkan status putar, juga alihkan teks tombol:

const pauseButton = document.getElementById('playPause');

pauseButton.addEventListener("click", pauseAndPlay, false);

function pauseAndPlay() {
  console.log(this);
  const media = document.getElementById(this.getAttribute('aria-controls'));

  if (media.paused) {
    media.play();
    this.innerText = this.dataset.pauseText;
  } else {
    media.pause();
    this.innerText = this.dataset.playText;
  }
}

Dengan menyertakan atribut controls, pengguna memiliki cara untuk mengontrol audio (atau video) meskipun JavaScript gagal. Hapus atribut kontrol hanya setelah tombol pengganti dibuatkan instance-nya.

document.querySelector('[aria-controls]').removeAttribute('controls');

Selalu sertakan kontrol eksternal saat pengguna tidak dapat mengakses kontrol, seperti pada video latar belakang dengan kontrol yang tersembunyi di balik konten situs. Penting untuk memahami dasar-dasar persyaratan aksesibilitas media guna mengakomodasi pengguna dengan berbagai kebutuhan lingkungan dan sensorik, termasuk jutaan orang dengan gangguan pendengaran dan penglihatan. Kita baru saja membahas HTMLMediaElement yang menyediakan beberapa properti, metode, dan peristiwa yang diwarisi oleh HTMLVideoElement dan HTMLAudioElement, dengan HTMLMediaElement yang menambahkan beberapa properti, metode, dan peristiwanya sendiri. Ada beberapa Media API lainnya, termasuk TextTrack API. Anda dapat menggunakan API Media Capture and Stream serta MediaDevices untuk merekam audio dari mikrofon pengguna atau merekam layar pengguna. Web Audio API memungkinkan manipulasi audio langsung dan rekaman serta streaming, penyimpanan, atau pengiriman audio ke elemen <audio>.

Menguji pemahaman Anda

Uji pengetahuan Anda tentang audio dan video.

Apa tujuan elemen <track>?

Untuk menyimpan informasi tentang durasi dan ukuran file video.
Coba lagi.
Untuk memberikan subtitel atau teks.
Benar.
Untuk menyimpan beberapa versi video ke browser atau perangkat yang berbeda.
Coba lagi.

Apa yang dikontrol oleh atribut poster?

Gambar yang akan ditampilkan jika browser pengguna tidak mendukung video.
Coba lagi.
Video intro.
Coba lagi.
Gambar yang ditampilkan sebagai foto diam sebelum video diputar.
Benar.