如何在Android上自动播放HTML5的MP4video?

我通过asp.net开发了一个移动页面来播放mp4video。

我知道iOS已禁用自动播放function,以最大限度地减less用户带宽,所以我怎么能自动播放Android上的HTML5 MP4video?

我已经把自动播放的HTML5代码,但它不起作用。

以下是我的代码:

<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> 

此外,我已经解决了用户点击图像叠加可以播放video的问题。 谢谢Karthi

这里是代码:

 <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> 

谢谢

我不认为自动播放在Android上的作品,但获得一个video播放可以是棘手的棘手。 我build议阅读这篇文章: 使HTML5video在Android手机上工作 。

我使用了下面的代码:

 // 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); }); 

似乎没有办法自动启动了。

这使得他们第一次触摸video将播放的屏幕。 它也会在第一次运行时自行删除,这样就可以避免多个监听器相加。

您可以将“静音”和“自动播放”属性添加到一起,以启用Android设备的自动播放function。

例如

 <video id="video" class="video" autoplay muted > 

Android实际上有一个API! 方法是setMediaPlaybackRequiresUserGesture() 。 我经过了很多挖掘video自动播放和大量的尝试黑客攻击后发现它。 这里有一个来自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); } } 

在Android 4.4及更高版本中,只要HTML5video组件位于您自己的WebView中,就可以删除用户手势的需求

 webview.setWebChromeClient(new WebChromeClient()); webview.getSettings().setMediaPlaybackRequiresUserGesture(false); 

要让video自动播放,您仍然需要将自动播放添加到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> 

自动播放只能通过第二次。 在Android 4.1+你必须有某种用户事件来获得第一个play()的工作。 一旦发生了,自动启动工作。

这是为了让用户确认他们正在使用带宽。

还有另一个问题可以解答这个问题。 使用Android 4浏览器自动启动html5video

在Android 4.1和4.2中,我使用下面的代码。

  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); 

在哪里html是

  <video id="video" src="sample.mp4" poster="image.jpg" controls></video> 

这很好。 但在Android 4.4中,它不起作用。

类似于KNaito的回答,下面是我的伎俩

 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"); } } 

这是一个PhoneGap插件,它解决了我的问题: https : //build.phonegap.com/plugins/1031

我只是把它包含在我的config.xml中

 <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> 

Chrome已禁用它。 https://bugs.chromium.org/p/chromium/issues/detail?id=159336即使是jQuery play()也被封锁了。 他们希望用户启动它,因此可以节省带宽。