Po ostatnim wprowadzeniu interfejsu Document Picture-in-Picture API (a nawet jeszcze wcześniej) deweloperzy stron internetowych coraz bardziej interesują się automatycznym otwieraniem okna obrazu w obrazie, gdy użytkownik przenosi fokus z bieżącej karty. Jest to szczególnie przydatne w przypadku aplikacji internetowych do wideokonferencji, ponieważ pozwala prezenterom widzieć uczestników i wchodzić z nimi w interakcje w czasie rzeczywistym podczas prezentowania dokumentu lub korzystania z innych kart lub okien.
Automatyczne włączanie obrazu w obrazie
Aby obsługiwać te przypadki użycia wideokonferencji, od Chrome 120 aplikacje internetowe na komputery mogą automatycznie włączać obraz w obrazie, z kilkoma ograniczeniami, które mają zapewnić użytkownikom pozytywne wrażenia. Aplikacja internetowa kwalifikuje się do automatycznego obrazu w obrazie tylko wtedy, gdy spełnia wszystkie te warunki:
Zarejestrowano dla niego moduł obsługi działania sesji multimedialnej dla działania
"enterpictureinpicture"
.Aktywnie korzysta z kamery lub mikrofonu za pomocą wywołania getUserMedia.
Użytkownik zezwala na „automatyczny obraz w obrazie” za pomocą ustawienia przeglądarki włączonego domyślnie.
![Automatyczne ustawienie obrazu w obrazie w panelu informacji o witrynie w przeglądarce Chrome.](https://developer.chrome.google.cn/static/blog/automatic-picture-in-picture/image/screenshot-the-automatic-3468f808b933b.jpg?authuser=5&hl=pl)
Gdy aplikacja internetowa spełnia wymagania, funkcja wywołania obsługi działania sesji multimedialnej dla działania "enterpictureinpicture"
jest wywoływana, gdy użytkownik przełączy fokus na inną kartę, co pozwala na otwarcie okna obrazu w obrazie bez interakcji użytkownika.
Deweloperzy internetowi mogą użyć interfejsu Picture-in-Picture API for <video>, aby otworzyć okno typu obraz w obrazie z elementu HTML <video>, lub interfejsu Document Picture-in-Picture API, aby otworzyć okno zawsze na górze, które można wypełnić dowolnym treściami HTML. Okno obrazu w obrazie nie jest aktywne po otwarciu i zamyka się automatycznie, gdy strona znów staje się widoczna.
Ten przykład pokazuje, jak poprosić o dostęp do aparatu użytkownika. Następnie bezpiecznie zarejestruj w przypadku działania "enterpictureinpicture"
moduł obsługi sesji multimediów za pomocą funkcji wywołania zwrotnego, która otwiera okno obrazu w obrazie. To okno zawiera strumień wideo z kamery użytkownika za pomocą interfejsu Picture-in-Picture API dla <video>.
const video = document.querySelector("video");
// Request access to the user's camera.
navigator.mediaDevices.getUserMedia({ video: true }).then((stream) => {
video.srcObject = stream;
});
try {
// Request video to automatically enter picture-in-picture when eligible.
navigator.mediaSession.setActionHandler("enterpictureinpicture", () => {
video.requestPictureInPicture();
});
} catch (error) {
console.log("The enterpictureinpicture action is not yet supported.");
}
Wypróbuj przykładową sesję multimedialną do rozmów wideo.
Włączanie obrazu w obrazie za pomocą elementów sterujących multimediami w przeglądarce
Działanie sesji multimediów "enterpictureinpicture"
jest też przydatne, gdy użytkownik chce włączyć obraz w obrazie za pomocą elementów sterujących multimediów w interfejsie przeglądarki Chrome.
![Element sterujący multimediami w przeglądarce Chrome z kursorem na elemencie sterującym obrazem w obrazie.](https://developer.chrome.google.cn/static/blog/automatic-picture-in-picture/image/screenshot-media-control-d6fa5f9aa2d8b.jpg?authuser=5&hl=pl)
Jeśli nie ma odtwarzanego elementu HTML <video>, ale tylko dźwięk, rejestrowanie modułu obsługi działania sesji multimedialnej dla "enterpictureinpicture"
informuje przeglądarkę, że aplikacja internetowa wie, jak sobie z tym poradzić, i sama otworzy okno Picture-in-Picture.
Jest to przydatne, gdy aplikacja internetowa chce użyć interfejsu Document Picture-in-Picture API, aby otworzyć okno Picture-in-Picture, zamiast pozwalać przeglądarce na obsługę tego okna za pomocą interfejsu Picture-in-Picture API for <video>.
Ten przykład pokazuje, jak bezpiecznie zarejestrować moduł obsługi działania sesji multimediów dla działania "enterpictureinpicture"
. Funkcja wywołania zwrotnego otwiera okno obrazu w obrazie za pomocą interfejsu API obrazu w obrazie dokumentu, gdy użytkownik włączy obraz w obrazie za pomocą elementów sterujących multimediami w interfejsie przeglądarki Chrome.
try {
// Use the Document Picture-in-Picture API when entering
// picture-in-picture from browser media control.
navigator.mediaSession.setActionHandler("enterpictureinpicture", async () => {
const pipWindow = await documentPictureInPicture.requestWindow();
// Populate HTML content and handle closing window...
});
} catch (error) {
console.log("The enterpictureinpicture action is not yet supported.");
}
Wypróbuj interfejs API dokumentu Picture-in-Picture w demonstracji odtwarzacza VideoJS lub przykładowej sesji multimediów wideo.
Angażowanie użytkowników i przesyłanie opinii
Jeśli chcesz podzielić się opinią lub napotkasz problemy, możesz to zrobić na stronie crbug.com.
Zasoby
Poświadczenia
Dziękujemy Tommy’emu Steimelowi, Ryanowi Floresowi, Shimiemu Rahimowi, Frankowi Liberato i Rachel Andrew za opinie.