首页 文章

如何在Android上自动播放HTML5 mp4视频?

提问于
浏览
18

我已经开发了一个asp.net的移动页面来播放mp4视频 .

我知道iOS已禁用自动播放功能以最小化用户带宽,那么我如何在Android上自动播放HTML5 mp4视频?

我已经将自动播放放在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>

此外,我已经修复了用户点击图像叠加层可以播放视频的问题 . 谢谢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>

谢谢

14 回答

  • 0

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

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

  • 0
    <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>
    
  • -1

    在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中,它不起作用 .

  • 2

    我不认为自动播放适用于Android,但是播放视频可能会非常棘手 . 我建议给这篇文章读一读:Making HTML5 Video work on Android phones .

  • 22

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

    例如

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

    我使用了以下代码:

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

    似乎没有办法自动启动 .

    这使得它们第一次触摸屏幕时视频将播放 . 它也将在首次运行时自行删除,以便您可以避免多个侦听器累加 .

  • 5

    Android实际上有一个API!该方法是setMediaPlaybackRequiresUserGesture() . 经过大量的视频自动播放和大量的SO攻击后,我发现了它 . 这是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);
        }
    }
    
  • 1

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

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

    要使视频自动播放,您仍需要为视频元素添加自动播放:

    <video id='video' controls autoplay>
      <source src='http://192.xxx.xxx.xx/XXXXVM01.mp4' type='video/mp4; codecs="avc1.42E01E, mp4a.40.2"' >
    </video>
    
  • 7

    重要说明:请注意,如果在Chrome的设置中启用了Google Chrome数据保护程序,则会禁用自动播放 .

  • 0

    自动播放仅在第二次工作 . 在Android 4.1上你必须有某种用户事件才能让第一个play()工作 . 一旦发生这种情况,那么自动启动就可以了 .

    这样用户就可以确认他们正在使用带宽 .

    还有另一个问题可以解决这个问题 . Autostart html5 video using android 4 browser

  • 3

    类似于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");
      }
    }
    
  • 27

    我简化了Javascript以触发视频开始 .

    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”只是示例网址

  • 3

    可以添加 muted 标签 .

    <video autoplay muted>
      <source src="video.webm" type="video/webm" />
      <source src="video.mp4" type="video/mp4" />
    </video>
    

    参考https://developers.google.com/web/updates/2016/07/autoplay

  • 0

    Chrome已将其停用 . https://bugs.chromium.org/p/chromium/issues/detail?id=159336即使是jQuery play()也被阻止了 . 他们希望用户启动它,以便节省带宽 .

相关问题