Existe-t-il un moyen de créer un plein écran vidéo HTML5?


144

Existe-t-il un moyen de lire une vidéo en plein écran à l'aide de la <video>balise HTML5 ?

Et si cela n'est pas possible, est-ce que quelqu'un sait s'il y a une raison à cette décision?


@MiffTheFox Une liste de contrôle des fonctionnalités de prise en charge HTML5 du navigateur moderne peut être trouvée ici: findmebyip.com/litmus/#html5-web-applications
ghoppe

## Première vidéo plein écran True HTML5 au monde ## blog.jilion.com/2011/07/27/… Voir aussi: wiki.mozilla.org/Gecko:FullScreenAPI
Wouter Dorgelo

Réponses:


90

HTML 5 ne fournit aucun moyen de créer une vidéo en plein écran, mais la spécification Plein écran parallèle fournit la requestFullScreenméthode qui permet à des éléments arbitraires (y compris des <video>éléments) d'être rendus en plein écran.

Il a un support expérimental dans un certain nombre de navigateurs .


Réponse originale:

À partir de la spécification HTML5 (au moment de la rédaction: juin 2009):

Les agents utilisateurs ne doivent pas fournir une API publique pour que les vidéos s'affichent en plein écran. Un script, combiné à un fichier vidéo soigneusement conçu, pourrait faire croire à l'utilisateur qu'une boîte de dialogue modale du système a été affichée et inviter l'utilisateur à entrer un mot de passe. Il y a aussi le danger d'un «simple» ennui, avec des pages qui lancent des vidéos en plein écran lorsque des liens sont cliqués ou des pages parcourues. Au lieu de cela, des fonctionnalités d'interface spécifiques à l'agent utilisateur peuvent être fournies pour permettre facilement à l'utilisateur d'obtenir un mode de lecture plein écran.

Les navigateurs peuvent fournir une interface utilisateur, mais ne doivent pas en fournir une programmable.


Notez que l'avertissement ci-dessus a depuis été supprimé de la spécification.


73

La plupart des réponses ici sont obsolètes.

Il est maintenant possible de mettre n'importe quel élément en plein écran à l'aide de l' API Plein écran , bien que ce soit toujours un gâchis car vous ne pouvez pas simplement appeler div.requestFullScreen()tous les navigateurs, mais devez utiliser des méthodes préfixées spécifiques au navigateur.

J'ai créé un simple wrapper screenfull.js qui facilite l'utilisation de l'API Fullscreen.

La prise en charge actuelle du navigateur est:

  • Chrome 15+
  • Firefox 10+
  • Safari 5.1+

Notez que de nombreux navigateurs mobiles ne semblent pas encore prendre en charge une option plein écran .


Ça ne fonctionne pas. Iframe1 a un enfant iframe2 d'iframe2 lorsque le plein écran est appliqué, il ne fait rien.

1
@YumYumYum de readme: "Si votre page est dans un <iframe>, vous devrez ajouter un attribut allowfullscreen (+ webkitallowfullscreen et mozallowfullscreen)."
Sindre Sorhus le

La démo ne semble pas fonctionner avec le navigateur par défaut d'Android 4.3.
Kai Noack

@SindreSorhus est-ce que ce support navigue sur mobile maintenant
Udara Suranga

31

Safari le prend en charge webkitEnterFullscreen.

Chrome devrait le prendre en charge car il s'agit également de WebKit, mais les erreurs se produisent.

Chris Blizzard de Firefox déclaré qu'ils sortiraient avec leur propre version du plein écran qui permettra à n'importe quel élément d'aller en plein écran. par exemple toile

Philip Jagenstedt d' Opéra dit qu'ils le soutiendront dans une version ultérieure.

Oui, la spécification vidéo HTML5 dit de ne pas prendre en charge le plein écran, mais comme les utilisateurs le souhaitent et que chaque navigateur le supportera, la spécification changera.


2
Cette réponse est obsolète, voyez la réponse de Sindre Sorhus (puis votez pour qu'elle dépasse ces réponses obsolètes)
matt burns

15
webkitEnterFullScreen();

Cela doit être appelé sur l'élément de balise vidéo, par exemple, pour afficher en plein écran la première balise vidéo de la page, utilisez:

document.getElementsByTagName('video')[0].webkitEnterFullscreen();

Remarque: cette réponse est obsolète et n'est plus pertinente.


Cette réponse est obsolète, voyez la réponse de Sindre Sorhus (puis votez pour qu'elle dépasse ces réponses obsolètes)
matt burns

Travailler dans Chrome ou Chromium et dans Node-Webkit!
Vish

8

De nombreux navigateurs Web modernes ont implémenté une API FullScreen qui vous permet de donner le focus plein écran à certains éléments HTML. C'est vraiment génial pour afficher des médias interactifs comme des vidéos dans un environnement entièrement immersif.

Pour que le bouton plein écran fonctionne, vous devez configurer un autre écouteur d'événements qui appellera la requestFullScreen()fonction lorsque vous cliquerez sur le bouton. Pour vous assurer que cela fonctionnera sur tous les navigateurs pris en charge, vous devrez également vérifier si le requestFullScreen()est disponible et revenir aux versions préfixées par le fournisseur ( mozRequestFullScreenet webkitRequestFullscreen) si ce n'est pas le cas.

var elem = document.getElementById("myvideo");
if (elem.requestFullscreen) {
  elem.requestFullscreen();
} else if (elem.msRequestFullscreen) {
  elem.msRequestFullscreen();
} else if (elem.mozRequestFullScreen) {
  elem.mozRequestFullScreen();
} else if (elem.webkitRequestFullscreen) {
  elem.webkitRequestFullscreen();
}

Référence: - https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Using_full_screen_mode Référence: - http://blog.teamtreehouse.com/building-custom-controls-for-html5 -vidéos


6

Je pense que si nous voulons avoir un moyen ouvert de visionner des vidéos dans nos navigateurs sans aucun plug-in de source fermée (et toutes les failles de sécurité qui accompagnent l'historique du plugin flash ...). La balise doit trouver un moyen d'activer le plein écran. Nous pourrions le gérer comme le fait le flash: pour faire du plein écran, il doit être activé par un clic gauche avec votre souris et rien d'autre, je veux dire qu'il n'est pas possible par ActionScript de se lancer plein écran au chargement d'un flash par exemple.

J'espère avoir été assez clair: après tout, je ne suis qu'un étudiant français en informatique, pas un poète anglais :)

À plus!


6

De CSS

video {
    position: fixed; right: 0; bottom: 0;
    min-width: 100%; min-height: 100%;
    width: auto; height: auto; z-index: -100;
    background: url(polina.jpg) no-repeat;
    background-size: cover;
}

2
Ce n'est pas vraiment le plein écran.
RamenChef


3

Vous pouvez modifier la largeur et la hauteur à 100%, mais cela ne couvrira pas le chrome du navigateur ou le shell du système d'exploitation.

La décision de conception est due au fait que le HTML vit dans la fenêtre du navigateur. Les plugins Flash ne sont pas à l'intérieur de la fenêtre, ils peuvent donc passer en plein écran.

Cela a du sens, sinon vous pouvez créer des balises img qui couvrent le shell, ou créer des balises h1 pour que tout l'écran soit une lettre.


3

Non, il n'est pas possible d'avoir une vidéo plein écran en html 5. Si vous voulez en connaître les raisons, vous avez de la chance car la bataille d'arguments pour le plein écran se déroule en ce moment. Consultez la liste de diffusion WHATWG et recherchez le mot «vidéo». J'espère personnellement qu'ils fournissent une API plein écran en HTML 5.


Big +1 pour le lien vers cette liste de diffusion.
mwilcox

3

Firefox 3.6 a une option plein écran pour les vidéos HTML5, faites un clic droit sur la vidéo et sélectionnez «plein écran».

Les derniers nightlies Webkit prennent également en charge la vidéo HTML5 plein écran, essayez le lecteur Sublime avec la dernière nuit et maintenez Cmd / Ctrl tout en sélectionnant l'option plein écran.

Je suppose que Chrome / Opera supportera également quelque chose comme ça. Espérons que IE9 prendra également en charge la vidéo HTML5 plein écran.



2

Une solution alternative serait de devoir simplement fournir au navigateur cette option dans le menu contextuel. Pas besoin d'avoir Javascript pour faire ça, même si je pouvais voir quand cela serait utile.

En attendant, une solution alternative serait simplement de maximiser la fenêtre (Javascript peut fournir les dimensions de l'écran) puis de maximiser la vidéo qu'elle contient. Essayez-le et voyez simplement si les résultats sont acceptables pour vos utilisateurs.


1

La vidéo HTML 5 passe en plein écran dans la dernière version nocturne de Safari, même si je ne sais pas comment cela est techniquement accompli.


Pourquoi le vote négatif? Safari 5 a le plein écran dans ses contrôles natifs. (Pas d'API cependant! Grrrr)
mwilcox

1

La solution complète:

    function bindFullscreen(video) {
            $(video).unbind('click').click(toggleFullScreen);
    }

    function toggleFullScreen() {
            if (!document.fullscreenElement &&    // alternative standard method
                    !document.mozFullScreenElement && !document.webkitFullscreenElement && !document.msFullscreenElement ) {  // current working methods
                    if (document.documentElement.requestFullscreen) {
                            document.documentElement.requestFullscreen();
                    } else if (document.documentElement.msRequestFullscreen) {
                            document.documentElement.msRequestFullscreen();
                    } else if (document.documentElement.mozRequestFullScreen) {
                            document.documentElement.mozRequestFullScreen();
                    } else if (document.documentElement.webkitRequestFullscreen) {
                            document.documentElement.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT);
                    }
            } 
            else {
                    if (document.exitFullscreen) {
                            document.exitFullscreen();
                    } else if (document.msExitFullscreen) {
                            document.msExitFullscreen();
                    } else if (document.mozCancelFullScreen) {
                            document.mozCancelFullScreen();
                    } else if (document.webkitExitFullscreen) {
                            document.webkitExitFullscreen();
                    }
            }
    }

0

Si vous avez la possibilité de définir votre site en tant qu'application Web progressive (PWA), il existe également une option à utiliser display: "fullscreen"sous manifest.json . Mais cela ne fonctionnera que si l'utilisateur ajoute / installe votre application Web sur l'écran d'accueil et l'ouvre à partir de là.


-1

Oui. Eh bien, ce qui se passe avec la vidéo HTML5, c'est que vous venez de mettre la <video>balise et le navigateur donnera sa propre interface utilisateur, et donc la possibilité de visualiser en plein écran. Cela rend vraiment la vie bien meilleure pour nous utilisateurs de ne pas avoir à voir «l'art» que certains développeurs jouant avec Flash pourraient faire :) Cela ajoute également de la cohérence à la plate-forme, ce qui est bien.


-1

c'est simple, tous les problèmes peuvent être résolus comme ça,

1) que la fonction d'échappement vous fasse toujours sortir du mode plein écran (cela ne s'applique pas à la saisie manuelle du plein écran via f11)

2) afficher temporairement une petite bannière indiquant que le mode vidéo plein écran est entré (par le navigateur)

3) bloquer l'action plein écran par défaut, tout comme cela a été fait pour les pop-ups et la base de données locale en html5 et emplacement api et etc., etc.

je ne vois aucun problème avec cette conception. quelqu'un pense que j'ai raté quelque chose?


1
Cela ne répond pas à la question.
RamenChef


-1

Vous pouvez le faire si vous dites à l'utilisateur d'appuyer sur F11 (plein écran pour de nombreux navigateurs) et que vous mettez la vidéo sur tout le corps de la page.


-1

Si aucune de ces réponses ne fonctionne (comme ce n'était pas le cas pour moi), vous pouvez créer deux vidéos. Un pour la taille normale et un autre pour la taille plein écran. Lorsque vous souhaitez passer en plein écran

  1. Utilisez javascript pour définir l'attribut 'src' de la vidéo plein écran sur l'attribut 'src' des vidéos plus petites
  2. Définissez la valeur video.currentTime sur la vidéo plein écran pour qu'elle soit la même que la petite vidéo.
  3. Utilisez css 'display: none' pour masquer la petite vidéo et afficher la grande avec la via 'position: absolute' et 'z-index: 1000' ou quelque chose de vraiment élevé.
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.