J'avais développé une page mobile par asp.net pour lire des vidéos au format MP4.
Je sais que iOS avait désactivé la fonction de lecture automatique afin de réduire la bande passante de l'utilisateur. Comment puis-je lire la vidéo au format HTML5 mp4 sur Android?
J'avais déjà mis la lecture automatique en code HTML5, mais cela ne fonctionnait pas.
Voici mon 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>
De plus, j'avais résolu le problème suivant: l'utilisateur clique sur la superposition d'images pour pouvoir lire la vidéo ..__ Merci Karthi
voici le 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>
Merci
Joe
Je ne pense pas que la lecture automatique fonctionne sur Android, mais il peut être très difficile de lire une vidéo. Je suggère de lire cet article: Pour que la vidéo HTML5 fonctionne sur les téléphones Android .
Vous pouvez ajouter les attributs "muet" et "lecture automatique" pour activer la lecture automatique sur les appareils Android.
par exemple.
<video id="video" class="video" autoplay muted >
J'ai utilisé le code suivant:
// 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);
});
Il ne semble plus y avoir de moyen de démarrer automatiquement.
Cela fait en sorte que la vidéo sera lue lors du premier contact avec l'écran. Il se supprimera également lors de la première exécution, afin d'éviter que plusieurs écouteurs ne s'additionnent.
Android a en fait une API pour cela! La méthode est setMediaPlaybackRequiresUserGesture () . Je l'ai trouvé après beaucoup de fouilles dans la lecture automatique de vidéos et de nombreuses tentatives de piratage informatique de la part de SO. Voici un exemple de 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);
}
}
Remarque importante: Sachez que si Google Chrome Data Saver est activé dans les paramètres de Chrome, la lecture automatique est désactivée.
Dans Android 4.4 et les versions ultérieures, vous pouvez supprimer la nécessité d'un geste de l'utilisateur tant que le composant Vidéo HTML5 réside dans votre propre WebView
webview.setWebChromeClient(new WebChromeClient());
webview.getSettings().setMediaPlaybackRequiresUserGesture(false);
Pour que la vidéo soit lue automatiquement, vous devez toujours ajouter la lecture automatique à l'élément video:
<video id='video' controls autoplay>
<source src='http://192.xxx.xxx.xx/XXXXVM01.mp4' type='video/mp4; codecs="avc1.42E01E, mp4a.40.2"' >
</video>
La lecture automatique ne fonctionne que la deuxième fois. sur Android 4.1+, vous devez avoir une sorte d’événement utilisateur pour que le premier play () fonctionne. Une fois que cela est arrivé, le démarrage automatique fonctionne.
Cela permet à l'utilisateur de reconnaître qu'il utilise de la bande passante.
Il y a une autre question qui répond à cette . Démarrage automatique de la vidéo html5 à l'aide du navigateur Android 4
semblable à la réponse de KNaito, ce qui suit me convient
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");
}
}
J'ai simplifié le Javascript pour déclencher la vidéo.
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" est juste un exemple d'URL
Peut ajouter une balise muted
.
<video autoplay muted>
<source src="video.webm" type="video/webm" />
<source src="video.mp4" type="video/mp4" />
</video>
référence 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>
Dans Android 4.1 et 4.2, j'utilise le code suivant.
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);
où html est
<video id="video" src="sample.mp4" poster="image.jpg" controls></video>
Ça marche bien. Mais dans Android 4.4, cela ne fonctionne pas.
Voici un plugin pour PhoneGap qui a résolu le problème pour moi: https://build.phonegap.com/plugins/1031
Je l'ai simplement inclus dans mon config.xml