Heim  >  Artikel  >  Web-Frontend  >  So lösen Sie das Problem der Vollbildwiedergabe in HTML5 WeChat

So lösen Sie das Problem der Vollbildwiedergabe in HTML5 WeChat

小云云
小云云Original
2017-12-19 09:09:252549Durchsuche

In diesem Artikel werden wir Ihnen weiterhin neues Wissen vermitteln, wie Sie das Vollbildproblem der HTML5-WeChat-Wiedergabe lösen können. Beim Abspielen von Videos unter WeChat auf iOS- und Android-Telefonen treten viele Probleme auf. Sie müssen beispielsweise manuell klicken, bevor das Video abgespielt wird, und das Video springt aus der WeChat-Box und eine Kontrollleiste wird angezeigt Das Video ist kein Tencent-Video, das Video wird nicht abgespielt, nachdem das Video abgespielt wurde. Es treten Probleme wie der Werbe-Push von Tencent Video auf.

Lösung: Fügen Sie dem Video-Tag einige Attribute hinzu und rufen Sie h5 natives Video auf.

<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 angezeigt wird, bevor der Benutzer auf die Wiedergabeschaltfläche klickt. 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>
<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>

Hast du es gelernt? Beeilen Sie sich und probieren Sie es aus.

Verwandte Empfehlungen:

HTML5 öffnet die Mobiltelefon-Scanfunktion und ihre Vor- und Nachteile._HTML5-Tutorial-Fähigkeiten

Am umfassendsten HTML5-Zusammenfassung globaler Attribute

Analyse des Prinzips der HTML5-Einzelseiten-Gesten-Schiebebildschirmumschaltung

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn