Ich hatte eine mobile Seite von asp.net entwickelt, um mp4-Videos abzuspielen.
Ich weiß, dass iOS die Autoplay-Funktion deaktiviert hat, um die Bandbreite des Benutzers zu minimieren.
Ich hatte Autoplay bereits in HTML5-Code eingefügt, aber es funktioniert nicht.
Folgendes ist mein Code:
<video autoplay controls id='video1' width='100%' poster='images/top_icon.png' webkitEnterFullscreen poster preload='true'>
<source src='http://192.xxx.xxx.xx/XXXXVM01.mp4' type='video/mp4; codecs='avc1.42E01E, mp4a.40.2' >
</video>
Außerdem hatte ich das Problem behoben, dass der Benutzer auf das Bild-Overlay klicken kann, um das Video abzuspielen. Danke Karthi
hier ist der code:
<script type="text/javascript">
$(document).ready(function() {
$("#video1").bind("click", function() {
var vid = $(this).get(0);
if (vid.paused) { vid.play(); }
else { vid.pause(); }
});
});
</script>
Vielen Dank
Joe
Ich denke nicht, dass Autoplay auf Android funktioniert, aber das Abspielen eines Videos kann ärgerlich sein. Ich schlage vor, diesen Artikel vorzulesen: HTML5-Video auf Android-Handys funktionieren lassen .
Sie können die Attribute 'stummgeschaltet' und 'autoplay' zusammen hinzufügen, um die automatische Wiedergabe für Android-Geräte zu aktivieren.
z.B.
<video id="video" class="video" autoplay muted >
Ich habe folgenden Code verwendet:
// get the video
var video = document.querySelector('video');
// use the whole window and a *named function*
window.addEventListener('touchstart', function videoStart() {
video.play();
console.log('first touch');
// remove from the window and call the function we are removing
this.removeEventListener('touchstart', videoStart);
});
Es scheint keinen Weg mehr zum automatischen Start zu geben.
Dadurch wird das Video beim ersten Berühren des Bildschirms wiedergegeben. Es wird sich auch beim ersten Durchlauf selbst entfernen, so dass Sie vermeiden, dass sich mehrere Listener addieren.
Android hat dafür eigentlich eine API! Die Methode lautet setMediaPlaybackRequiresUserGesture () . Ich habe es gefunden, nachdem ich mich viel mit Video-Autoplay beschäftigt hatte und viele Hacks von SO versucht hatte. Hier ist ein Beispiel aus blair vanderhoof :
package com.example.myProject;
import Android.os.Bundle;
import org.Apache.cordova.*;
import Android.webkit.WebSettings;
public class myProject extends CordovaActivity
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
super.init();
// Set by <content src="index.html" /> in config.xml
super.loadUrl(Config.getStartUrl());
//super.loadUrl("file:///Android_asset/www/index.html");
WebSettings ws = super.appView.getSettings();
ws.setMediaPlaybackRequiresUserGesture(false);
}
}
Wichtiger Hinweis: Beachten Sie, dass die automatische Wiedergabe deaktiviert ist, wenn Google Chrome Data Saver in den Einstellungen von Chrome aktiviert ist.
In Android 4.4 und höher können Sie die Notwendigkeit einer Benutzergeste entfernen, solange sich die HTML5-Videokomponente in Ihrem eigenen WebView befindet
webview.setWebChromeClient(new WebChromeClient());
webview.getSettings().setMediaPlaybackRequiresUserGesture(false);
Damit das Video automatisch abgespielt werden kann, müssen Sie dem Videoelement dennoch das automatische Abspielen hinzufügen.
<video id='video' controls autoplay>
<source src='http://192.xxx.xxx.xx/XXXXVM01.mp4' type='video/mp4; codecs="avc1.42E01E, mp4a.40.2"' >
</video>
Autoplay funktioniert nur beim zweiten Mal. Unter Android 4.1 muss ein Benutzerereignis vorhanden sein, damit das erste play () funktioniert. Sobald dies geschehen ist, funktioniert der Autostart.
Dies ist so, dass der Benutzer bestätigt, dass er Bandbreite verwendet.
Es gibt noch eine andere Frage, die diese Frage beantwortet . Autostart html5-Video mit dem Android 4-Browser .
Ähnlich wie die Antwort von KNaito tut das Folgende für mich den Trick
function simulateClick() {
var event = new MouseEvent('click', {
'view': window,
'bubbles': true,
'cancelable': true
});
var cb = document.getElementById('player');
var canceled = !cb.dispatchEvent(event);
if (canceled) {
// A handler called preventDefault.
alert("canceled");
} else {
// None of the handlers called preventDefault.
alert("not canceled");
}
}
Ich habe das Javascript vereinfacht, um das Video zu starten.
var bg = document.getElementById ("bg");
function playbg() {
bg.play();
}
<video id="bg" style="min-width:100%; min-height:100%;" playsinline autoplay loop muted onload="playbg(); "><source src="Files/snow.mp4" type="video/mp4"></video>
</td></tr>
</table>
* "Files/snow.mp4" ist nur ein Beispiel-URL
Kann muted
-Tag hinzufügen.
<video autoplay muted>
<source src="video.webm" type="video/webm" />
<source src="video.mp4" type="video/mp4" />
</video>
referenz https://developers.google.com/web/updates/2016/07/autoplay
<video autoplay controls id='video1' width='100%' poster='images/top_icon.png' webkitEnterFullscreen poster preload='true'>
<source src='http://192.xxx.xxx.xx/XXXXVM01.mp4' type='video/mp4; codecs='avc1.42E01E, mp4a.40.2' >
</video>
In Android 4.1 und 4.2 verwende ich den folgenden Code.
evt.initMouseEvent( "click", true,true,window,0,0,0,0,0,false,false,false,false,0, true );
var v = document.getElementById("video");
v.dispatchEvent(evt);
wo HTML ist
<video id="video" src="sample.mp4" poster="image.jpg" controls></video>
Das funktioniert gut. Aber in Android 4.4 funktioniert es nicht.
Hier ist ein Plugin für PhoneGap, das das Problem für mich gelöst hat: https://build.phonegap.com/plugins/1031
Ich habe es einfach in meine config.xml eingefügt