如何在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()也被封锁了。 他们希望用户启动它,因此可以节省带宽。