Видео для Android HTML5 – работает при нажатии на воспроизведение, но не video.play ()

Я понимаю, что html5-видео на Android не может автоматически запускаться. Поскольку это мое видео работает на устройстве, только когда пользователь нажимает кнопку воспроизведения.

<video width="640px" height="360px" src="media/video/Moments_of_Everyday_Life.mp4" controls id="video"></video> <script type="text/javascript"> $(function(){ var video = document.getElementById('video'); video.play(); }); </script> 

Почему это не сработает? И в чем разница между нажатием на игру и использованием этого метода .play ()?

ОБНОВИТЬ

Это работает на моем dekstop, просто не на устройстве Android.

Он не будет работать по той же причине, что браузеры блокируют вызовы window.open() , поскольку это позволяет веб-разработчикам отклонять предпочтения пользователя, а не автоматически воспроизводить медиа (или открывать всплывающие окна).

Разница между нажатием кнопки воспроизведения и использованием этого метода – это именно то, что вы сказали: клик. Такие вызовы разрешены в событиях кликов, но не в целом.

Я заработал! Теперь он может воспроизводить видео в формате HTML5 с использованием «autoplay»! Черт побери! Хорошо, вот что я сделал:

 <div id=content> <video width="1280px" height="720px" src="file:///android_asset/videos/Moments_of_Everyday_Life.mp4"></video> </div> 

Примечание. Некоторые люди говорят, что они работают, когда добавляют плакат и / или предварительную загрузку. Я получил эту работу с и без.

Javascript автоматически воспроизводит видео:

 <script type="text/javascript"> $(function(){ function callback () { document.querySelector('video').src = document.querySelector('video').src document.querySelector('video').play(); } window.addEventListener("load", callback, false); }); </script> 

Надеюсь, это может помочь любому, я боролся с этим уже неделю!

Просто быть чистым:

работа над:

Android 4.0.4 Samsung 10.1 Tablet Собственное устройство Браузер

Я сделал следующие открытия о видео HTML5 на Android 4.0+. Получение этого исследования заняло неделю проб и ошибок – и проблемы были разными с каждой основной версией Android. GOOGLE: ЭТО НЕ ДОЛЖНО БЫТЬ ЭТО МНОГО ПИТА !!!!

Чтобы выполнить эти тесты, я сделал приложение для песочницы, состоящее из HTML-страницы, сохраненной в / assets.

HTML:

 <!DOCTYPE html> <html> <head> <title>HTML5 Video Test</title> </head> <body> <video preload="metadata"><source src="http://www.w3schools.com/html/movie.mp4" type="video/mp4"></video> <script> var myvideo = document.getElementsByTagName('video')[0]; myvideo.addEventListener('loadeddata', function() { console.log("** RECEIVED loadeddata **"); myvideo.play();//this first play is needed for Android 4.1+ }, false); myvideo.addEventListener('canplaythrough', function() { console.log("** RECEIVED canplaythrough **"); myvideo.play();//this second play is needed for Android 4.0 only }, false); </script> </body> </html> 

JAVA: ("/assets/html5video.html")

 private WebView mWebView; private ProgressBar mProgressBar; @SuppressLint("NewApi") @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.videotest); // progress bar mProgressBar = (ProgressBar) findViewById(R.id.videotest_progressbar); mProgressBar.setProgress(0); mProgressBar.setVisibility(View.VISIBLE); // webview mWebView = (WebView) findViewById(R.id.videotest_webview); mWebView.getSettings().setJavaScriptEnabled(true); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { //NOTE: this is required only for Android 4.2.2+ mWebView.getSettings().setMediaPlaybackRequiresUserGesture(false); } mWebView.setWebChromeClient(new WebChromeClient() { public void onProgressChanged(WebView view, int progress) { Log.i(TAG, "Progress = "+progress); mProgressBar.setProgress(progress); } }); mWebView.setWebViewClient(new WebViewClient() { public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { Toast.makeText(TestActivity.this, "Problem loading webpage", Toast.LENGTH_LONG).show(); mProgressBar.setVisibility(View.GONE); } public void onPageFinished(WebView view, String url) { mProgressBar.setVisibility(View.GONE); } }); } @Override protected void onResume() { super.onResume(); mWebView.loadUrl("file:///android_asset/html5video.html"); } 

Android 4.0.3 ПРИМЕЧАНИЕ.

Я продолжал сталкиваться с раздражающим исключением java.lang.Throwable: EventHub.removeMessages(int what = 107) is not supported before the WebViewCore is set up. К счастью, это не повлияло на воспроизведение видео.

После нескольких часов поиска и тестирования «решений» это тот, который работал для меня! Решила Angry Fridges ВЫ – ЧЕЛОВЕК … ИЛИ ЖЕНЩИНА !!

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

Заметили как автовоспроизведение, так и приглушение , они оба необходимы.

Это позволило видео воспроизводить как на компьютере, так и на телефоне Android.

Или вы можете инициализировать свой WebView, чтобы сделать это легко:

  webview.setWebViewClient(new WebViewClient() { // autoplay when finished loading via javascript injection public void onPageFinished(WebView view, String url) { mMessageContentView.loadUrl("javascript:(function() { document.getElementsByTagName('video')[0].play(); })()"); } }); 

Вышеизложенное отлично подходит для меня.

Я нашел на kitkat, что Firefox позволит вам воспроизводить видео программно.

Кроме того, Chrome будет, если вы перейдете в хром: // флаги и включите опцию «Отключить жест для воспроизведения мультимедиа».

Intereting Posts
AspectJ в Android: вызов pointcut (* Activity.onCreate (..)) не выделяет вызовы Activity.onCreate () Чтение файла в андроиде – разрешение файла запрещено Android System App 101 Письма не выходят, а ссылки в SMS дают 404 OpenCV Android: получить кадры камеры в фоновом режиме, не показывая на экране Android намерен открыть предпочтительный браузер пользователя Непропорциональная клавиатура на ландшафтном дизайне Android Ошибка java.lang.RuntimeException: Stub! В Android с тестированием Fitnesse Интеграция Android в Android OS 4 Как проверить приложение на переднем плане от службы? Как я могу избавиться от «Пропущенных кадров». Приложение может делать слишком много работы на главной теме "error Как приостановить Flash-контент в Android WebView, когда моя активность не отображается? Как получить текущий контекст активности переднего плана в android? Доступ к Интернету на базе Java: WIFI или 3G Тестирование с помощью SugarORM и Robolectric