Menu
flag Ar iconالعربيةdown icon

الصوت في HTML: وسم audio والتحكم والتشغيل التلقائي والتكرار

العنصر <audio> يشغّل الملفات الصوتية بالمشغل المدمج في المتصفح. تعلّم البنية، والسمات (controls وautoplay وloop وmuted وpreload)، والصيغ التي تستخدمها، ولماذا يُمنع التشغيل التلقائي مع الصوت، وكيف تبني زر تشغيل خاصًا بك بـ JavaScript.

تحتوي هذه الصفحة على محررات قابلة للتشغيل - حرّر، شغّل، وشاهد النتيجة فوراً.

كيف تضيف صوتًا

اجعل العنصر <audio> يشير إلى ملف صوتي وأضف controls:

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

controls تُظهر مشغل المتصفح: التشغيل والإيقاف المؤقت، والشريط الزمني، والوقت، والتحكم في مستوى الصوت. من دون controls لا يشغل العنصر أي مساحة إطلاقًا. المعاينة لا تستطيع تحميل ملفات من حاسوبك، لذلك يبني هذا المثال ملف WAV قصيرًا في المتصفح بسكربت ويستخدمه كـ src. اضغط زر التشغيل:

يبدو المشغل مختلفًا في Chrome وFirefox وSafari، لأن كل متصفح يرسم مشغله الخاص. احذف controls وسيختفي المشغل، مع أن الصوت يبقى موجودًا لتشغّله JavaScript.

سمات الصوت

السمةوظيفتها
controlsتُظهر مشغل المتصفح
autoplayتحاول بدء التشغيل عند التحميل (ممنوع مع الصوت، انظر أدناه)
loopيبدأ من جديد حين ينتهي الملف
mutedيبدأ والصوت مغلق
preloadnone (لا ينزّل شيئًا حتى التشغيل) أو metadata (المدة فقط) أو auto (المتصفح يقرر)
srcالملف المراد تشغيله، أو استخدم عناصر <source> أبناء لعدة صيغ

استخدم preload="none" أو "metadata" للصفحات التي فيها مشغلات كثيرة، مثل قائمة حلقات بودكاست، كي لا تنزّل الصفحة كل الملفات مسبقًا.

الصيغ والبدائل

أدرج عدة ملفات بـ <source> وسيشغّل المتصفح أول ملف يدعمه. النص داخل العنصر لا يظهر إلا في المتصفحات التي لا تدعم <audio>:

<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>
الصيغةنوع MIMEملاحظات
MP3audio/mpegيعمل في كل المتصفحات الحالية، وهو الخيار الآمن لملف واحد
AAC (.m4a)audio/mp4مدعوم على نطاق واسع، وجودة جيدة بأحجام صغيرة
Opus أو Vorbis (.ogg, .webm)audio/ogg, audio/webmملفات صغيرة، وأدرج MP3 كبديل لأن دعم Safari يختلف بحسب الإصدار
WAVaudio/wavغير مضغوط وكبير، ومناسب للمؤثرات الصوتية القصيرة

لماذا يفشل التشغيل التلقائي

المتصفحات لا تسمح للصفحة ببدء إصدار الصوت من تلقاء نفسها. autoplay، أو استدعاء play() قبل أن ينقر المستخدم أو يلمس الشاشة، يُرفض. هذا المثال يحاول التشغيل عند التحميل ويطبع ما حدث، ثم يعرض زرًا:

سترى عادةً NotAllowedError، وهو الخطأ الذي يعطيه المتصفح حين يمنع التشغيل. الزر يعمل لأن النقرة تُعد إذنًا. لكل متصفح قواعده الإضافية (Chrome مثلًا يتذكر المواقع التي تشغّل فيها الوسائط كثيرًا)، فلا تعتمد أبدًا على التشغيل التلقائي: ابدأ الصوت من إجراء يقوم به المستخدم، وتعامل دائمًا مع الـ promise التي تُرجعها play().

new Audio(url) تنشئ عنصر صوت في JavaScript من دون إضافته إلى الصفحة، وهذا مفيد للمؤثرات الصوتية.

ابنِ عناصر التحكم الخاصة بك

أخفِ المشغل المدمج بترك controls، ثم تحكّم في العنصر بواجهة JavaScript الخاصة به: play() وpause() وcurrentTime وduration وvolume، وأحداث مثل timeupdate وended:

الزر <button> حقيقي، فيعمل بلوحة المفاتيح، وتتبدل تسميته بين Play وPause. في نهاية الملف يوقف المتصفح العنصر مؤقتًا ويطلق ended، فيعود الزر إلى Play من تلقاء نفسه. إن بنيت عناصر تحكم مخصصة، فأنت تتولى أيضًا ما قدمته العناصر المدمجة مجانًا: دعم لوحة المفاتيح، والتسميات، والتحكم في مستوى الصوت.

إمكانية الوصول

  • لا تبدأ الصوت من تلقاء نفسه أبدًا. فهو يقاطع قارئات الشاشة ويُفزع الناس. ابدأ الصوت من نقرة.
  • قدّم نصًا مكتوبًا للبودكاست والمحتوى المنطوق. رابط إلى نسخة نصية تحت المشغل يكفي، ومحركات البحث تستطيع قراءتها.
  • أبقِ controls، أو ابنِ عناصر تحكم من أزرار حقيقية، كي يمكن إيقاف الصوت بلوحة المفاتيح.

للفيديو مع الصوت والترجمات وصور الغلاف، راجع صفحة وسم video، فعنصر <audio> يشترك معه في معظم السمات وفي واجهة JavaScript كلها.

أخطاء شائعة

  • نسيان controls. العنصر غير مرئي من دونها، فيبدو كأن شيئًا لم يحدث.
  • توقع أن يعمل autoplay. ابدأ التشغيل من نقرة وتعامل مع الـ promise التي تُرجعها play().
  • مسار ملف أو نوع خاطئ. افتح عنوان الملف مباشرة للتحقق منه، واجعل type مطابقًا للصيغة الحقيقية (audio/mpeg لـ MP3).
  • تحميل كل ملف في قائمة طويلة. استخدم preload="none" أو "metadata".
  • موسيقى خلفية لا يمكن إيقافها. أعطِ الناس دائمًا طريقة ظاهرة للإيقاف المؤقت.

الأسئلة الشائعة

كيف أضيف صوتًا إلى صفحة HTML؟

استخدم <audio src="song.mp3" controls></audio>. السمة controls تُظهر مشغل المتصفح بزر تشغيل وشريط زمني ومستوى صوت. من دونها يكون العنصر غير مرئي.

لماذا لا يعمل التشغيل التلقائي للصوت؟

تمنع المتصفحات الصوت الذي يبدأ قبل أن يتفاعل المستخدم مع الصفحة. ابدأ التشغيل من نقرة بـ audio.play() بدلًا من ذلك. العنصر المكتوم قد يعمل تلقائيًا، لكن هذا نادرًا ما يفيد في الصوت.

ما صيغة الصوت التي أستخدمها في HTML؟

MP3 يعمل في كل المتصفحات الحالية، فهو الخيار الآمن لملف واحد. وAAC في ملف .m4a مدعوم على نطاق واسع أيضًا. استخدم عناصر <source> لتقديم أكثر من صيغة.

كيف أكرر الصوت في HTML؟

أضف السمة loop: <audio src="rain.mp3" controls loop>. حين ينتهي الملف يبدأ من جديد.

كيف أشغّل صوتًا بـ JavaScript؟

أنشئ عنصر audio أو حدده واستدعِ play()، مثل new Audio('click.mp3').play() داخل معالج نقر. play() تُرجع promise تُرفض إذا منع المتصفح التشغيل.

هل يمكنني تنسيق مشغل الصوت في HTML؟

قليلًا فقط: يمكنك ضبط عرضه وهامشه وطريقة عرضه، لكن الأزرار بداخله يرسمها المتصفح وتختلف من متصفح لآخر. لمظهر مخصص، أخفِ عناصر التحكم وابنِ عناصرك الخاصة بالأزرار وواجهة JavaScript الخاصة بالصوت.

Coddy programming languages illustration

تعلّم البرمجة مع Coddy

ابدأ الآن