İşitsel ve Video

Resimler modülünde öğrendiğiniz gibi HTML, bir web sayfasına medya yerleştirilmesini sağlar. Bu bölümde, ses ve video dosyalarının nasıl yerleştirileceği, kullanıcı denetimleri, videolarınız için statik resim yer tutucusu sağlanması ve ses ve video dosyalarını erişilebilir hale getirme de dahil en iyi uygulamalar gibi konuları ele alacağız.

<audio> ve <video>

<video> ve <audio> öğeleri, medya oynatıcıları doğrudan src özelliğiyle yerleştirmek için veya her biri birer src dosya önerisi sağlayan bir dizi <source> öğesi için kapsayıcı öğe olarak kullanılabilir. Ses dosyası yerleştirmek için <video> kullanılabilir ancak ses dosyalarını yerleştirmek için <audio> öğesi tercih edilir.

Açılış <video> ve <audio> etiketleri, controls, autoplay, loop, mute, preload ve genel özellikler de dahil olmak üzere birçok başka özellik içerebilir. <video> öğesi ayrıca height, width ve poster özelliklerini de destekler.

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

Bu <video> örneğin, video kaynağına bağlantı veren src özelliğine sahip tek bir kaynak vardır. poster özelliği, video yüklenirken görüntülenecek bir resim sağlar. Son olarak controls özelliği, kullanıcı videosu kontrolleri sağlar.

Yedek içerik, açılış ve kapanış etiketleri arasına eklenir. Kullanıcı aracısı <video> özelliğini (veya <audio>) desteklemiyorsa bu içerik gösterilir. </video> kapanış etiketi, ikisi arasında içerik olmasa bile zorunludur (ancak her zaman yedek içerik olmalıdır , değil mi?).

Açılış <video> veya <audio> etiketlerinde src özelliği yoksa her biri medya dosyasında src özelliğine sahip bir veya daha fazla <source> öğesi ekleyin. Aşağıdaki örnekte, açılış ve kapanış etiketleri arasında üç medya dosyası seçeneği, yedek içerik, İngilizce ve Fransızca altyazılar bulunmaktadır.

<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>

Her <source> alt öğesi, kaynağa işaret eden bir src özelliği içerir ve type özelliği, tarayıcıyı bağlı dosyanın medya türü hakkında bilgilendirir. Bu, tarayıcının şifresini çözemeyeceği medya dosyalarını getirmesini engeller.

type özelliğine, kaynağın tam olarak nasıl kodlandığını belirten bir codecs parametresi ekleyebilirsiniz. Codec'ler, henüz tüm tarayıcılarda desteklenmeyen medya optimizasyonlarını dahil etmenize olanak tanır. Codec, medya türünden noktalı virgülle ayrılır. Örneğin codec, WebM dosyalarının VP8 video ve vorbis ses içerdiğini belirten <source src="videos/machines.webm" type="video/webm;codecs=vp8,vorbis"> gibi pratik bir söz dizimi kullanılarak yazılabilir. Ayrıca, MP4 kodlamasının Gelişmiş Video Kodlama Ana Profili Düzey 4.2 olduğunu belirten <source src="videos/machines.mp4" type="video/mp4; codecs=avc1.4d002a"> gibi Codec'lerin anlaşılması daha zor olabilir. Söz diziminin açıklanması bu dersin kapsamı dışındadır. Jake Archibald'ın daha fazla bilgi için AV1 videoları için codec parametresinin nasıl belirlendiğini açıklayan bir yayını var.

Bir video görüntülerken varsayılan olarak videonun ilk karesi, kullanılabilir duruma geldiğinde sabit çekim olarak gösterilir. Bu, kontrol edilebilen bir şeydir. poster özelliği, video indirilirken ve oynatılana kadar bir resmin kaynağının gösterilmesini sağlar. Video oynatılır ve ardından duraklatılırsa poster yeniden gösterilmez.

Videonuzun en boy oranını tanımlamayı unutmayın. Video yüklendiğinde poster ve video arasındaki boyut farkı, yeniden düzenleme ve yeniden boyama neden olur.

Her zaman boolean controls özelliğini ekleyin. Bu, kullanıcı denetimlerini görünür hale getirerek kullanıcılara ses seviyelerini kontrol etme, sesi tamamen kapatma ve videoyu tam ekrana genişletme imkanı sağlar. controls öğesinin atlanması, özellikle boole autoplay özelliği dahilse kötü bir kullanıcı deneyimi oluşturur. Bir medya dosyasının otomatik oynatılması, sessize alındığında ve görünür kontrollerle bile genellikle kötü bir kullanıcı deneyimi oluşturur. Bu nedenle, muted boole özelliği atlanırsa bazı tarayıcıların autoplay özellik yönergesini dikkate almayacağını unutmayın.

Parça sayısı

Zamanlanmış metin parçalarını belirtmek için ses ve videonun açılış ve gerekli kapanış etiketlerinin arasına bir veya daha fazla <track> öğesi ekleyin. Aşağıdaki örnek, hem İngilizce hem de Fransızca dillerinde zamanlanmış metin altyazıları sağlayan iki <track> dosyası içermektedir.

<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" />

src özelliğinde belirtilen parça dosyaları, WebVTT biçiminde (.vtt) olmalıdır. crossorigin özelliği eklenmemişse dosyalar, HTML belgesiyle aynı alanda olmalıdır.

Parça kind özelliği için beş tane numaralandırılmış değer vardır: subtitles, captions, descriptions, chapters ve diğer metadata.

Diyalog konuşma metni ve çeviriler için srclang özelliğiyle birlikte subtitles özelliğini ekleyin. Her label özelliğinin değeri, kullanıcıya bir seçenek olarak gösterilir. Belirlenen VTT seçeneğinin içeriği videonun üzerinde gösterilir. Altyazıların görünümüne ::cue/ ::cue() hedeflenerek stil eklenebilir.

kind="caption" değeri, ses efektleri ve diğer ilgili ses bilgilerini içeren konuşma metni ve çeviriler için ayrılmalıdır. Bu sadece işitme engelli görüntüleyenler için değildir. Bir kullanıcı, kulaklığını bulamadığından altyazıları açmış olabilir. Belki de favori bir podcast'teki son birkaç konuşmayı yakalayamadılar ve anladıklarını doğrulamak için konuşma metnini okumak istiyorlar. Ses ve video içeriğine alternatif yöntemlere sahip olmak hem önemli hem de pratiktir.

kind="description", Google Home veya Alexa gibi ekranı olmayan bir sistem kullanan ya da görme engelli kullanıcılar için videoyu göremeyen kullanıcılara yönelik videodaki görsel içeriğin metin açıklamaları içindir.

WebVTT biçimini kullanarak altyazı sağlamak, videoyu işitme engelli kişiler için erişilebilir hale getirir. Engelliliğin insan ile içinde bulunduğu çevre arasındaki uyumsuzluk olduğunu unutmayın. İşitme bozukluğunun nedeni, kullanıcının gürültülü bir ortamda bulunması, hoparlörün veya kulaklığın bozuk olması ya da işitme kaybı olması veya işitme engelli olması olabilir. İçeriğinizin erişilebilir olmasını sağlamak düşündüğünüzden çok daha fazla kişiye yardımcı olur; herkese yardımcı olur.

Arka plan videoları konusunda dikkat edilmesi gereken noktalar

Pazarlama veya tasarım ekibiniz, sitenizde arka plan videosu olmasını isteyebilir. Genellikle bu, kısık, otomatik oynatılan, döngülü, kontrolsüz bir video istedikleri anlamına gelir. HTML aşağıdaki gibi görünebilir:

<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>

Arka plan videolarına erişilemiyor. İçerik, kullanıcılara oynatma ve tüm altyazılara erişim konusunda tam kontrol sağlamadan arka plan videoları aracılığıyla aktarılmamalıdır. Bu video tamamen dekoratif olduğu için none ARIA rolünü içeriyor ve tüm yedek içerikleri çıkarıyor. Her zaman sessize alınmış videoların performansını artırmak için medya kaynaklarınızdan ses parçasını kaldırın.

Videonuz beş saniye veya daha kısa sürerse erişilebilirlik kuralları için duraklatma mekanizması gerekmese de boole loop özelliğine sahip her şey varsayılan olarak sonsuz döngüye girer ve bu beş saniye ya da başka herhangi bir süre sınırını aşar. İyi bir kullanıcı deneyimi için her zaman videoyu duraklatma yöntemini ekleyin. Bu işlemi en kolay şekilde controls öğesi ekleyerek yapabilirsiniz.

Özel medya denetimleri

Tarayıcının yerleşik kontrolleri yerine özel video veya ses kontrollerini görüntülemek için controls özelliğini ekleyin. Ardından, özel medya denetimleri eklemek ve kontroller özelliğini kaldırmak için JavaScript'i kullanın. Örneğin, bir ses dosyasının çalma durumunu açıp kapatan bir <button> ekleyebilirsiniz.

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

Bu örnekte, ziyaretçi oynatma ve duraklatma durumları arasında geçiş yaptığında güncellenecek metni içeren dataset özelliklerine sahip bir düğme bulunmaktadır. aria-controls özelliği, düğme tarafından kontrol edilen öğenin id özelliğine eklenir (bu örnekte ses). Sesi kontrol eden her düğmenin bir etkinlik işleyicisi vardır.

Özelleştirilmiş kontroller oluşturmak için HTMLMediaElement.play() ve HTMLMediaElement.pause() kullanın. Oynatma durumunu açıp kapatırken düğme metnini de açıp kapatın:

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;
  }
}

controls özelliği dahil edildiğinde, JavaScript başarısız olsa bile kullanıcının sesi (veya videoyu) kontrol edebileceği bir yöntem olur. Kontroller özelliğini yalnızca değiştirme düğmesi örneklendikten sonra kaldırın.

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

Kullanıcılar denetimlere erişemediğinde her zaman harici denetimleri ekleyin (ör. denetimleri site içeriğinin arkasında gizlenmiş arka plan videoları). İşitme kaybı ve görme bozukluğu olan milyonlarca kişi dahil olmak üzere, farklı çevre ve duyusal ihtiyaçları olan kullanıcıları karşılamak için medya erişilebilirlik gereksinimlerinin temellerini anlamak önemlidir. Az önce hem HTMLVideoElement hem de HTMLAudioElement tarafından devralınan çeşitli özellikler, yöntemler ve etkinlikler sunan HTMLMediaElement'a değindik. HTMLMediaElement ise kendi başına birkaç özellik, yöntem ve etkinlik eklemiştir. TextTrack API'si de dahil olmak üzere başka birkaç Medya API'si daha vardır. Bir kullanıcının mikrofonundan ses kaydetmek veya kullanıcının ekranını kaydetmek için Media Capture and Streams ve MediaDevices API'lerini kullanabilirsiniz. Web Audio API, canlı ve önceden kaydedilmiş ses ve akışta değişiklik yapılmasını, sesin kaydedilmesini veya <audio> öğesine gönderilmesini sağlar.

Öğrendiklerinizi sınayın

Ses ve video bilginizi test edin.

<track> öğesi ne için kullanılır?

Videonun uzunluğu ve dosya boyutuyla ilgili bilgileri depolamak için.
Tekrar deneyin.
Altyazı sağlamak.
Doğru.
Videonun farklı tarayıcı veya cihazlar için farklı sürümlerini depolamak.
Tekrar deneyin.

poster özelliği neyi kontrol eder?

Kullanıcının tarayıcısı videoyu desteklemiyorsa gösterilecek resim.
Tekrar deneyin.
Tanıtım videosu.
Tekrar deneyin.
Video oynatılmadan önce hareketsiz çekim olarak görüntülenen bir resim.
Doğru.