Heim >Web-Frontend >H5-Tutorial >So lösen Sie das Problem der Vollbildwiedergabe in HTML5 WeChat
Beim Abspielen von Videos unter WeChat auf iOS- und Android-Telefonen treten viele Probleme auf. Beispielsweise müssen Sie manuell klicken, bevor das Video abgespielt wird, und das Video springt aus dem WeChat-Feld und eine Kontrollleiste wird angezeigt . Wenn es sich bei dem Video nicht um ein Tencent-Video handelt, wird es Probleme geben, wie z. B. den Werbeschub von Tencent kann jedem helfen.
Lösung: Fügen Sie dem Video-Tag einige Attribute hinzu und nennen Sie h5 natives Video.
<video id="videoALL" src="video/01.mp4" poster="images/1.jpg" /*视频封面*/ preload="auto" webkit-playsinline="true" /*这个属性是ios 10中设置可以 让视频在小窗内播放,也就是不是全屏播放*/ playsinline="true" /*IOS微信浏览器支持小窗内播放*/ x-webkit-airplay="allow" x5-video-player-type="h5" /*启用H5播放器,是wechat安卓版特性*/ x5-video-player-fullscreen="true" /*全屏设置, 设置为 true 是防止横屏*/> x5-video-orientation="portraint" /*播放器支付的方向, landscape横屏,portraint竖屏,默认值为竖屏*/ style="object-fit:fill"> </video>
poster="images/1.jpg": Das Attribut gibt das Bild an, das beim Herunterladen des Videos angezeigt wird, oder das Bild, das dem Benutzer angezeigt wird klickt auf die Wiedergabetaste. Wenn diese Eigenschaft nicht festgelegt ist, wird stattdessen das erste Bild des Videos verwendet.
preload="auto": Attribut gibt an, dass das Video nach dem Laden der Seite geladen wird.
Webkit-Playsinline und Playsinline: lokale Wiedergabe während der Videowiedergabe, ohne den Dokumentenfluss zu unterbrechen. Dieses Attribut ist jedoch etwas ganz Besonderes. Es muss in die Webseite der APP eingebettet werden, z. B. in UIwebview in WeChat, und erlaubt InlineMediaPlayback = YES webview.allowsInlineMediaPlayback = YES, um wirksam zu werden. Mit anderen Worten: Wenn die APP es nicht einrichtet, ist das Hinzufügen dieses Tags zu Ihrer Seite ungültig. Aus diesem Grund spielt WeChat auf Android-Telefonen Videos immer im Vollbildmodus ab, da die APP Playsinline nicht unterstützt, ISO WeChat jedoch.
Ich möchte hier hinzufügen, dass ISO das Tag webkit-playsinline festlegen und löschen muss, wenn Sie eine Live-Übertragung im Vollbildmodus oder ein H5-Erlebnis im Vollbildmodus durchführen möchten, da dies nicht unterstützt wird Sie setzen es auf „false“. Android benötigt es nicht, da es standardmäßig den Vollbildmodus verwendet. Derzeit verfügt der Vollbildmodus jedoch über Wiedergabesteuerelemente, unabhängig davon, ob Sie die Steuerelemente festgelegt haben oder nicht. Diejenigen, die Live-Übertragungen durchführen, benötigen möglicherweise Wiedergabesteuerungen, aber H5 im Vollbildmodus benötigt diese nicht. Um die Steuerungen während der Vollbildwiedergabe zu entfernen, sind die folgenden Einstellungen erforderlich: Wiedergabe auf derselben Ebene.
x-webkit-airplay="allow" Die Funktion von x-webkit-airplay="allow" ist derzeit unbekannt, aber der Herausgeber geht davon aus, dass dieses Attribut es diesem Video ermöglichen sollte, die AirPlay-Funktion von iOS zu unterstützen. Mit AirPlay können Sie Videos, Musik und Fotodateien direkt von verschiedenen Orten auf Ihrem iOS-Gerät abspielen. Das heißt, die drahtlose Wiedergabe von Audio- und Videodateien ist natürlich über die AirPlay-Funktion möglich Auch das Endgerät zur Wiedergabe muss die entsprechenden Funktionen unterstützen.
x5-video-player-type: Aktivieren Sie den H5-Player auf derselben Ebene. Wenn sich das Video also im Vollbildmodus befindet, kann p auf der Videoebene angezeigt werden, was ebenfalls ein einzigartiges Attribut von ist WeChat Android-Version. Der Alias für die Wiedergabe auf derselben Ebene wird auch als immersive Wiedergabe bezeichnet. Beim Abspielen sieht es aus wie im Vollbildmodus, aber die Steuerungs- und WeChat-Navigationsleisten wurden entfernt, sodass nur die Tasten „X“ und „<“ übrig bleiben. Der aktuelle Same-Layer-Player funktioniert nur auf Android (einschließlich WeChat) und unterstützt iOS vorerst nicht. Der Grund, warum die gleiche Ebenenwiedergabe nur für Android möglich ist, liegt daran, dass Android nicht wie ISO lokal abgespielt werden kann. Der Standard-Vollbildmodus blockiert einige Schnittstellenvorgänge. Es ist in Ordnung, wenn es sich um H5 im Vollbildmodus handelt, aber für Live-Übertragungen sind Funktionen wie z als Sperrfeuer Es ist unmöglich zu erreichen, daher löst das Konzept der Wiedergabe auf derselben Ebene dieses Problem derzeit. Beim Test wurde jedoch festgestellt, dass verschiedene Versionen von ISO und Android leicht unterschiedliche Auswirkungen haben.
x5-video-orientation: Deklariert die vom Player unterstützte Ausrichtung. Die optionalen Werte sind horizontaler Bildschirm im Querformat und vertikaler Bildschirm im Hochformat. Standardwert Porträt. Unabhängig davon, ob es sich um eine Live-Übertragung oder um eine H5-Vollbildübertragung handelt, erfolgt die Wiedergabe normalerweise vertikal. Für dieses Attribut ist jedoch x5-video-player-type erforderlich, um den H5-Modus zu aktivieren
x5-video-player-fullscreen: Vollbild Einstellung. Es verfügt über zwei Attributwerte, true und false, unterstützt die Vollbildwiedergabe und false unterstützt nicht die Vollbildwiedergabe.
Tatsächlich ist der ISO-WeChat-Browser der Kern von Chrome und alle zugehörigen Attribute werden unterstützt, weshalb X5 die Wiedergabe auf derselben Ebene nicht unterstützt. Der Android-WeChat-Browser verwendet den X5-Kernel und unterstützt einige Attribut-Tags wie „playsinline“ nicht, sodass er immer im Vollbildmodus angezeigt wird.
In Android WeChat gibt es immer noch ein Problem mit schwarzen Rändern oben und unten, und der Bildschirm kann nicht im Vollbildmodus angezeigt werden.
Lösung: Fügen Sie dem Video das Stilattribut object-fit:fill; hinzu. Wenn immer noch schwarze Ränder vorhanden sind, ist möglicherweise die Videogröße nicht geeignet.
<p id="videobox"> <video id="videoALL" src="mp4.mp4" poster="1.jpg" preload="auto" webkit-playsinline="true" playsinline="true" x-webkit-airplay="allow" x5-video-player-type="h5" x5-video-player-fullscreen="true" x5-video-orientation="portraint" style="object-fit:fill"> </video> <p id="btn" onclick="playcontr()"></p> </p> <p id="videoend"><p id="againbtn" onclick="playcontr()"></p></p></p> <p></p> <p></p> <pre class="brush:php;toolbar:false">*{ padding: 0; margin: 0; } #videobox{position: absolute;width: 100%;height: 100%;background-color: green;background-image: url(1.jpg);background-size: 100% 100%;background-position: top;overflow: hidden;} #videoALL{ height: auto; position: absolute; width: 100%; top: 0; left: 0; object-fit: fill; display: block; background-size: cover; overflow: hidden;} #btn,#againbtn{width: 81px;height: 75px;position: absolute;top: 50%;left:50%;margin-top: -37.5px;margin-left: -40.5px;background-image: url(btn.png);background-size: 100% 100%;} #videoend{position: absolute;background-color: pink;display: none;background-image: url(2.jpg);background-size: cover;background-position: top;}
<script> var videoALL = document.getElementById('videoALL'), videobox = document.getElementById('videobox'), btn = document.getElementById('btn'), videoend = document.getElementById('videoend'); var clientWidth = document.documentElement.clientWidth; var clientHeight = document.documentElement.clientHeight; videoALL.style.width = clientWidth + 'px'; videoALL.style.height = 'auto'; document.addEventListener('touchmove', function(e){e.preventDefault()}, false); function stylep(pId){ pId.style.width = clientWidth + 'px'; pId.style.height = clientHeight +200+ 'px'; } stylep(videobox); stylep(videoend); var u = navigator.userAgent; var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1; //android终端 var isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端 function playcontr(){ if (isAndroid) { videoALL.style.width = window.screen.width + 'px'; videoALL.style.height = window.screen.height + 'px'; } videobox.style.display = "block"; videoALL.play(); btn.style.display = "none"; videoend.style.display = "none"; }; videoALL.addEventListener('pause',function(){ videoALL.style.width = clientWidth + 'px'; btn.style.display = "block"; }) videoALL.addEventListener("ended",function(){ videoALL.pause(); videobox.style.display = "none"; videoend.style.display = "block"; }); </script>
Hat es jeder gelernt? Beeilen Sie sich und probieren Sie es aus.
Verwandte Empfehlungen:
WeChat-Applet verwendet Videokomponente, um Videofunktionsbeispiel abzuspielen
So verwenden Sie H5 zur Bedienung von Audio und Video
So starten Sie die Wiedergabe des aktuellen Audios oder Videos in HTML5
Das obige ist der detaillierte Inhalt vonSo lösen Sie das Problem der Vollbildwiedergabe in HTML5 WeChat. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!