Audio dan video

Seperti yang Anda pelajari dalam modul gambar, HTML memungkinkan penyematan media ke halaman web. Di bagian ini, kita akan melihat file audio dan video, termasuk cara menyematkannya, kontrol pengguna, menyediakan placeholder gambar statis untuk video, dan praktik terbaik, termasuk membuat file audio dan video dapat 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 disarankan untuk menyematkan file suara.

Tag pembuka <video> dan <audio> dapat berisi beberapa atribut lain, 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 pengganti disertakan di antara tag pembuka dan penutup. Jika agen pengguna tidak mendukung <video> (atau <audio> konten ini ditampilkan. Tag penutup </video> diperlukan, meskipun tidak ada konten di antara keduanya (tetapi harus selalu ada konten pengganti , bukan?).

Jika tidak ada atribut src yang disertakan pada tag pembuka <video> atau <audio>, sertakan satu atau beberapa elemen <source>, masing-masing dengan atribut src ke file media. Contoh berikut mencakup tiga opsi file media, konten penggantian, dan subtitel bahasa Inggris dan Prancis di 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. Tindakan ini mencegah browser mengambil file media yang tidak dapat didekode.

Dalam atribut type, Anda dapat menyertakan parameter codecs, yang menentukan secara persis cara resource dienkode. Codec memberi Anda cara untuk menyertakan pengoptimalan media sebagai peningkatan progresif (elemen yang tidak didukung oleh 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 bisa 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. Penjelasan sintaksis ini berada di luar cakupan pelajaran ini. Untuk mengetahui detail selengkapnya, baca postingan Jake Archibald tentang cara menentukan parameter codec untuk video AV1.

Saat menampilkan video, secara default, frame pertama video ditampilkan sebagai foto diam saat tersedia. Hal ini dapat dikontrol. Atribut poster memungkinkan sumber gambar ditampilkan saat video didownload dan hingga diputar. Jika video diputar dan kemudian dijeda, poster tidak akan ditampilkan kembali.

Pastikan untuk menentukan rasio aspek video Anda, karena saat video dimuat, perbedaan ukuran antara poster dan video akan menyebabkan tata ulang dan pengecatan ulang.

Selalu sertakan atribut boolean controls. Hal ini membuat kontrol pengguna terlihat, sehingga pengguna dapat mengontrol level audio, membisukan audio sepenuhnya, dan meluaskan video ke layar penuh. Menghilangkan controls akan menciptakan pengalaman pengguna yang buruk, terutama jika atribut boolean autoplay disertakan. Perhatikan bahwa beberapa browser tidak akan mematuhi direktif atribut autoplay jika atribut boolean muted dihilangkan karena memutar file media secara otomatis umumnya merupakan pengalaman pengguna yang buruk, meskipun dalam kondisi tanpa suara dan dengan kontrol yang terlihat.

Lagu

Di antara tag penutup yang diperlukan dan tag pembuka audio dan video, sertakan satu atau beberapa elemen <track> untuk menentukan trek teks yang disinkronkan dengan waktu. Contoh berikut menyertakan dua file <track>, yang menyediakan subtitel teks yang disesuaikan waktunya 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 jalur, 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 terenumerasi untuk atribut kind jalur: subtitles, captions, descriptions, chapters, dan metadata lainnya.

Sertakan subtitles bersama dengan 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. Tampilan subtitel dapat diberi gaya dengan menargetkan ::cue/ ::cue().

Nilai kind="caption" harus dicadangkan untuk transkripsi dan terjemahan yang menyertakan efek suara dan informasi audio relevan lainnya. Fitur ini tidak hanya untuk penonton tunarungu. Mungkin pengguna tidak dapat menemukan headphone-nya sehingga dia mengaktifkan teks. Atau mungkin mereka tidak begitu memahami beberapa poin pembicaraan terakhir dari podcast favorit, sehingga mereka ingin membaca transkripnya untuk mengonfirmasi pemahaman mereka. Memiliki cara alternatif untuk mengakses konten audio dan video adalah hal yang penting dan nyaman.

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

Menyediakan teks dan subtitel menggunakan format WebVTT membuat video dapat diakses oleh orang-orang dengan gangguan pendengaran. Pendengaran yang terganggu dapat disebabkan oleh pengguna yang berada di lingkungan yang bising, memiliki speaker yang rusak atau headphone yang rusak, atau karena orang tersebut memiliki gangguan pendengaran atau mengidentifikasi diri sebagai Tuli. Memastikan konten Anda dapat diakses akan membantu lebih banyak orang daripada yang Anda kira; hal ini membantu semua orang.

Pertimbangan video latar belakang

Tim pemasaran atau desain Anda mungkin ingin situs Anda menyertakan video latar belakang. Umumnya, ini berarti mereka menginginkan video yang diputar otomatis, berulang, dan tanpa suara dengan tanpa kontrol. HTML-nya mungkin terlihat seperti ini:

<video playsinline 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 video ini murni dekoratif, video ini menyertakan peran ARIA none dan tidak menyertakan konten penggantian. Untuk meningkatkan performa video yang selalu disetel ke mode senyap, hapus trek audio dari sumber media Anda.

Jika video Anda diputar selama lima detik atau kurang, pedoman aksesibilitas tidak memerlukan mekanisme jeda, tetapi apa pun dengan atribut boolean loop akan diulang selamanya secara default, sehingga melampaui batas waktu lima detik ini, atau batas waktu lainnya. Untuk pengalaman pengguna yang baik, selalu sertakan metode untuk 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. Kemudian, gunakan JavaScript untuk menambahkan kontrol media kustom dan menghapus atribut kontrol. Misalnya, Anda dapat menambahkan <button> yang mengalihkan 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 mencakup tombol dengan atribut dataset yang berisi teks yang 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 pemroses peristiwa.

Untuk membuat kontrol yang disesuaikan, gunakan HTMLMediaElement.play() dan HTMLMediaElement.pause(). Saat mengubah status pemutaran, ubah juga 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 dapat mengontrol audio (atau video) meskipun JavaScript gagal. Hanya hapus atribut kontrol setelah tombol pengganti dibuat.

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

Selalu sertakan kontrol eksternal saat pengguna tidak dapat mengakses kontrol, seperti pada video latar belakang yang kontrolnya disembunyikan di balik konten situs. Penting untuk memahami dasar-dasar persyaratan aksesibilitas media untuk mengakomodasi pengguna dengan kebutuhan lingkungan dan sensorik yang berbeda, termasuk jutaan orang dengan gangguan pendengaran dan gangguan penglihatan. Kita baru saja membahas HTMLMediaElement yang menyediakan beberapa properti, metode, dan peristiwa yang diwarisi oleh HTMLVideoElement dan HTMLAudioElement, dengan HTMLMediaElement menambahkan beberapa properti, metode, dan peristiwanya sendiri. Ada beberapa Media API lainnya, termasuk TextTrack API. Anda dapat menggunakan API Media Capture and Streams dan MediaDevices untuk merekam audio dari mikrofon pengguna atau merekam layar pengguna. Web Audio API memungkinkan memanipulasi audio live dan yang telah direkam sebelumnya serta melakukan streaming, menyimpan, atau mengirim audio ke elemen <audio>.

Periksa pemahaman Anda

Uji pengetahuan Anda tentang audio dan video.

Untuk apa elemen <track> digunakan?

Untuk menyimpan informasi tentang durasi dan ukuran file video.
Coba lagi.
Untuk menyediakan subtitel atau teks.
Benar.
Untuk menyimpan beberapa versi video untuk 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.