رابط برنامهنویسی کاربردی (API) جلسه رسانه به وبسایتها اجازه میدهد تا به کاربران اطلاع دهند که در حال حاضر چه چیزی در مرورگرشان در حال پخش است و آن را بدون بازگشت به صفحهای که آن را اجرا کرده است، کنترل کنند. تجربه کاربری را میتوان از طریق فراداده در اعلانهای رسانهای سفارشی، رویدادهای رسانهای مانند پخش، مکث، جستجو و تغییر مسیر، سفارشیسازی کرد. این سفارشیسازیها در زمینههای مختلفی از جمله هابهای رسانهای دسکتاپ، اعلانهای رسانهای در موبایل و حتی در دستگاههای پوشیدنی در دسترس هستند.

وقتی یک وبسایت در حال پخش صدا یا تصویر است، کاربران بهطور خودکار اعلانهای رسانهای را یا در نوار اعلانها در موبایل یا در بخش رسانه در دسکتاپ دریافت میکنند. مرورگر تمام تلاش خود را میکند تا با استفاده از عنوان سند و بزرگترین تصویر آیکونی که میتواند پیدا کند، اطلاعات مناسب را نشان دهد. API جلسه رسانه به شما امکان میدهد اعلان رسانهای را با برخی از فرادادههای رسانهای غنیتر مانند عنوان، نام هنرمند، نام آلبوم و آثار هنری، همانطور که در زیر نشان داده شده است، سفارشی کنید.

مثال زیر به شما نشان میدهد که چگونه یک اعلان رسانهای سفارشی ایجاد کنید و به اقدامات رسانهای اولیه مانند پخش و مکث پاسخ دهید.
const video = document.querySelector("video");
navigator.mediaSession.metadata = new MediaMetadata({
title: "Never Gonna Give You Up",
artist: "Rick Astley",
album: "Whenever You Need Somebody",
artwork: [
{ src: "https://via.placeholder.com/96", sizes: "96x96" },
{ src: "https://via.placeholder.com/128", sizes: "128x128" },
{ src: "https://via.placeholder.com/256", sizes: "256x256" },
{ src: "https://via.placeholder.com/512", sizes: "512x512" },
],
});
navigator.mediaSession.setActionHandler("play", async () => {
// Resume playback
try {
await video.play();
} catch (err) {
console.error(err.name, err.message);
}
});
navigator.mediaSession.setActionHandler("pause", () => {
// Pause active playback
video.pause();
});
video.addEventListener("play", () => {
navigator.mediaSession.playbackState = "playing";
});
video.addEventListener("pause", () => {
navigator.mediaSession.playbackState = "paused";
});
مطالعه بیشتر
- مشخصات جلسه رسانهای W3C
- اعلانهای رسانهای و کنترلهای پخش را با Media Session API سفارشی کنید
- رابط برنامهنویسی جلسه رسانهای MDN
نسخه آزمایشی
اچتیامال
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link
rel="icon"
href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text y=%22.9em%22 font-size=%2290%22>📺</text></svg>"
/>
<title>How to customize media notifications</title>
</head>
<body>
<h1>How to customize media notifications</h1>
<video controls playsinline src="https://storage.googleapis.com/media-session/caminandes/short.mp4"></video>
<p>Credits: Media files are © copyright Blender Foundation | <a href="https://www.blender.org">www.blender.org</a>.</p>
</body>
</html>سیاساس
:root {
color-scheme: dark light;
}
html {
box-sizing: border-box;
}
*,
*:before,
*:after {
box-sizing: inherit;
}
body {
margin: 1rem;
font-family: system-ui, sans-serif;
}
video {
display: block;
margin-top: 10px;
max-width: 100%;
}
جیاس
const video = document.querySelector("video");
navigator.mediaSession.metadata = new MediaMetadata({
title: "Caminandes 2: Gran Dillama - Blender Animated Short",
artist: "Blender Foundation",
artwork: [
{ src: "https://storage.googleapis.com/media-session/caminandes/artwork-96.png", sizes: "96x96" },
{ src: "https://storage.googleapis.com/media-session/caminandes/artwork-128.png", sizes: "128x128" },
{ src: "https://storage.googleapis.com/media-session/caminandes/artwork-256.png", sizes: "256x256" },
{ src: "https://storage.googleapis.com/media-session/caminandes/artwork-512.png", sizes: "512x512" },
],
});
navigator.mediaSession.setActionHandler("play", async () => {
// Resume playback
try {
await video.play();
} catch (err) {
console.error(err.name, err.message);
}
});
navigator.mediaSession.setActionHandler("pause", () => {
// Pause active playback
video.pause();
});
video.addEventListener("play", () => {
navigator.mediaSession.playbackState = "playing";
});
video.addEventListener("pause", () => {
navigator.mediaSession.playbackState = "paused";
});