Menu

HTML Ses Ekleme: audio Etiketi, controls, autoplay ve loop

<audio> elementi ses dosyalarını tarayıcının yerleşik oynatıcısıyla çalar. İşaretlemeyi, özellikleri (controls, autoplay, loop, muted, preload), hangi biçimlerin kullanılacağını, sesli otomatik oynatmanın neden engellendiğini ve JavaScript ile kendi oynat butonunu yapmayı öğren.

Bu sayfada çalıştırılabilir editörler var - düzenle, çalıştır ve sonucu anında gör.

Ses nasıl eklenir

<audio> elementini bir ses dosyasına yönlendir ve controls ekle:

<audio src="song.mp3" controls></audio>

controls tarayıcının oynatıcısını gösterir: oynat ve duraklat, bir zaman çizelgesi, süre ve bir ses kontrolü. controls olmadan element hiç yer kaplamaz. Önizleme bilgisayarından dosya yükleyemez, bu yüzden bu örnek tarayıcıda bir script ile kısa bir WAV dosyası oluşturur ve onu src olarak kullanır. Oynat'a bas:

Oynatıcı Chrome, Firefox ve Safari'de farklı görünür, çünkü her tarayıcı kendininkini çizer. controls değerini sil, oynatıcı kaybolur, ama ses JavaScript'in çalması için hâlâ oradadır.

Audio özellikleri

ÖzellikNe yapar
controlsTarayıcının oynatıcısını gösterir
autoplayYüklenince çalmaya başlamayı dener (sesliyse engellenir, aşağıya bak)
loopDosya bittiğinde yeniden başlar
mutedSes kapalı başlar
preloadnone (oynatılana kadar hiçbir şey indirme), metadata (yalnızca uzunluk) ya da auto (tarayıcı karar verir)
srcÇalınacak dosya; ya da birkaç biçim için <source> alt elementleri kullan

Bir podcast bölüm listesi gibi çok sayıda oynatıcı olan sayfalarda, sayfa her dosyayı en baştan indirmesin diye preload="none" ya da "metadata" kullan.

Biçimler ve yedekler

<source> ile birkaç dosya listele, tarayıcı desteklediği ilkini çalar. Elementin içindeki metin yalnızca <audio> desteği olmayan tarayıcılarda görünür:

<audio controls preload="metadata">
  <source src="episode.opus" type="audio/ogg; codecs=opus">
  <source src="episode.mp3" type="audio/mpeg">
  <p>Your browser cannot play audio. <a href="episode.mp3">Download the episode</a>.</p>
</audio>
BiçimMIME türüNotlar
MP3audio/mpegGüncel her tarayıcıda çalar; güvenli tek seçim
AAC (.m4a)audio/mp4Yaygın olarak desteklenir, küçük boyutlarda iyi kalite
Opus ya da Vorbis (.ogg, .webm)audio/ogg, audio/webmKüçük dosyalar; Safari desteği sürüme göre değiştiği için yedek olarak MP3 listele
WAVaudio/wavSıkıştırılmamış ve büyük; kısa ses efektleri için uygun

Otomatik oynatma neden başarısız olur

Tarayıcılar bir sayfanın kendi kendine ses çıkarmaya başlamasına izin vermez. autoplay ya da kullanıcı tıklamadan veya dokunmadan önce play() çağırmak reddedilir. Bu örnek yüklenirken çalmayı dener ve ne olduğunu yazdırır, sonra bir buton sunar:

Genellikle bir tarayıcının oynatmayı engellediğinde verdiği hata olan NotAllowedError görürsün. Buton çalışır, çünkü bir tıklama izin sayılır. Her tarayıcının kendi ek kuralları vardır (örneğin Chrome sık medya oynattığın siteleri hatırlar), bu yüzden asla otomatik oynatmaya güvenme: sesi bir kullanıcı eyleminden başlat ve play() çağrısının döndürdüğü promise'i her zaman ele al.

new Audio(url) JavaScript'te sayfaya eklemeden bir audio elementi oluşturur; ses efektleri için kullanışlıdır.

Kendi kontrollerini yap

controls yazmayarak yerleşik oynatıcıyı gizle, sonra elementi JavaScript API'siyle yönet: play(), pause(), currentTime, duration, volume ve timeupdate ile ended gibi olaylar:

Buton gerçek bir <button> olduğu için klavyeyle çalışır ve yazısı Play ile Pause arasında değişir. Dosyanın sonunda tarayıcı elementi duraklatır ve ended olayını tetikler, böylece buton kendiliğinden Play'e döner. Özel kontroller yaparsan, yerleşik olanların sana hiçbir ek iş olmadan verdiklerini de üstlenirsin: klavye desteği, etiketler ve bir ses kontrolü.

Erişilebilirlik

  • Sesi asla kendiliğinden başlatma. Ekran okuyucuları böler ve insanları irkiltir. Sesi bir tıklamadan başlat.
  • Podcast'ler ve konuşma içeren sesler için bir metin dökümü sun. Oynatıcının altında bir metin sürümüne giden link yeterlidir ve arama motorları onu okuyabilir.
  • controls değerini koru ya da ses klavyeyle duraklatılabilsin diye kontrolleri gerçek butonlardan yap.

Altyazı ve poster içeren sesli videolar için video etiketi sayfasına bak; <audio> özelliklerinin çoğunu ve JavaScript API'sinin tamamını onunla paylaşır.

Sık yapılan hatalar

  • controls unutmak. Element onsuz görünmezdir ve hiçbir şey olmamış gibi görünür.
  • autoplay özelliğinin çalışmasını beklemek. Oynatmayı bir tıklamadan başlat ve play() çağrısından gelen promise'i ele al.
  • Yanlış bir dosya yolu ya da türü. Kontrol etmek için dosya URL'sini doğrudan aç ve type değerini gerçek biçimle eşleştir (MP3 için audio/mpeg).
  • Uzun bir listedeki her dosyayı yüklemek. preload="none" ya da "metadata" kullan.
  • Durdurulamayan arka plan müziği. İnsanlara her zaman duraklatmanın görünür bir yolunu ver.

Sıkça Sorulan Sorular

Bir HTML sayfasına nasıl ses eklenir?

<audio src="song.mp3" controls></audio> kullan. controls özelliği tarayıcının oynat butonu, zaman çizelgesi ve ses kontrolü olan oynatıcısını gösterir. O olmadan element görünmezdir.

Sesim neden otomatik çalmıyor?

Tarayıcılar, kullanıcı sayfayla etkileşime girmeden sesli başlayan sesleri engeller. Onun yerine oynatmayı bir tıklamadan audio.play() ile başlat. Sessiz bir element otomatik çalabilir, ama ses için bu nadiren işe yarar.

HTML'de hangi ses biçimini kullanmalıyım?

MP3 güncel her tarayıcıda çalar, bu yüzden tek bir dosya için güvenli seçimdir. .m4a dosyasındaki AAC de yaygın olarak desteklenir. Birden fazla biçim sunmak için <source> elementleri kullan.

HTML'de ses nasıl döngüye alınır?

loop özelliğini ekle: <audio src="rain.mp3" controls loop>. Dosya bittiğinde baştan yeniden başlar.

JavaScript ile nasıl ses çalınır?

Bir audio elementi oluştur ya da seç ve play() çağır, örneğin bir tıklama işleyicisinin içinde new Audio('click.mp3').play(). play(), tarayıcı oynatmayı engellerse reddedilen bir promise döndürür.

HTML ses oynatıcısına stil verebilir miyim?

Yalnızca biraz: genişliğini, margin'ini ve display değerini ayarlayabilirsin, ama içindeki butonları tarayıcı çizer ve her birinde farklı görünürler. Özel bir görünüm için kontrolleri gizle ve butonlar ile audio JavaScript API'si kullanarak kendininkini yap.

Coddy programming languages illustration

Coddy ile kodlamayı öğren

BAŞLA