2012-01-31 16 views
16

Stworzyłem mobilną stronę przez asp.net, aby odtwarzać wideo MP4.Jak odtwarzać filmy HTML5 mp4 na Androida?

Wiem, że iOS wyłączył funkcję autoodtwarzania, aby zminimalizować przepustowość użytkowników, więc w jaki sposób mogę automatycznie odtwarzać wideo HTML mp4 na Androida?

Już umieściłem autoodtwarzanie w kodzie HTML5, ale nie działa.

Oto mój kod:

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

Ponadto, miałem problem został rozwiązany, że użytkownik kliknie na nakładki obrazu można odtworzyć wideo. Dzięki Karthi

oto kod:

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

Dzięki

Joe

+0

Jeśli chcesz odtwarzać wideo podczas klikania na plakat, utwórz nakładkę obrazu, a następnie kliknij tę nakładkę obrazu, aby odtworzyć wideo. – Karthi

+0

Dzięki Karthi, utworzyłem nakładkę graficzną. to działa. –

+0

Od Androida 4.2+ atrybut ** autoplay ** html5 dla wideo nie jest obsługiwany. Film zacznie się odtwarzać dopiero po kliknięciu przez użytkownika. Aby sobie z tym poradzić, możesz skorzystać z funkcji Modernizr "videoautoplay" (https://modernizr.com/download?videoautoplay-setclasses), która dodaje klasę "videoautoplay" lub "no-videoautoplay" na znaczniku html. – TheodorosPloumis

Odpowiedz

5

Nie sądzę autoodtwarzania działa na Androidzie, ale coraz wideo do gry może być irytująco trudne. Sugeruję nadanie temu artykułowi następującej treści: Making HTML5 Video work on Android phones.

+1

Obecnie dodajemy 'wyciszony' dla niemego wideo, jak opisano w [Odpowiedź AngryFridges] (https://stackoverflow.com/questions/9075520/how-to-autoplay-html5-mp4-video-on-android/40718904#40718904) zapewnia przynajmniej częściowe rozwiązanie. – Arjan

2

Autoodtwarzanie działa tylko po raz drugi. na Androida 4.1+ musisz mieć jakieś wydarzenie użytkownika, aby uzyskać pierwszą grę() do pracy. Kiedy to się stanie, działa autostart.

Jest to tak, że użytkownik potwierdza, że ​​używa przepustowości.

Jest jeszcze jedno pytanie, które odpowiada na to pytanie. Autostart html5 video using android 4 browser

+0

to takie bzdury, ale dzięki za potwierdzenie tego problemu dla mnie. – Abadaba

0

W systemach Android 4.1 i 4.2 używam następującego kodu.

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

gdzie HTML jest

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

Działa to dobrze. Ale w Androidzie 4.4 to nie działa.

+0

W 4.4 można użyć: 'webview.getSettings() .setMediaPlaybackRequiresUserGesture (false);' w natywnym kodzie. – Roel

+0

co to jest "evt"? czy to jedna z tych par odpowiedzi na telefon i znajomych bez rozpoznania go? – igorsantos07

1

podobna do odpowiedzi KNaito za dodaje załatwia sprawę dla mnie

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

Użyłem poniższy kod:

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

nie wydaje się być sposobem na auto-start już .

Powoduje to, że przy pierwszym dotknięciu ekranu zostanie odtworzony film wideo. Usunie się również przy pierwszym uruchomieniu, dzięki czemu unikniesz wielokrotnego słuchania.

+0

Wow, twoja odpowiedź jest naprawdę interesująca. Dobrze tu działało. Dziękuję Ci. –

+0

Dziękuję, James, działało jak czar. – ziggrat

+0

Dzięki za bardzo sprytne i minimalne rozwiązanie. –

7

Android faktycznie ma API do tego! Ta metoda to setMediaPlaybackRequiresUserGesture(). Znalazłem go po wielu kopaniu w autoodtwarzanie wideo i wielu próbach włamań z SO.Oto przykład z 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); 
    } 
} 
+14

To jest dobra odpowiedź, ale to nie jest JavaScript. – Dominique

3

w Android 4.4 i wyżej możesz usunąć potrzebę gestu użytkownika, o ile komponent wideo HTML5 jest dostępny we własnej przeglądarce internetowej.Aby uzyskać wideo do autoodtwarzania, to trzeba jeszcze dodać autoodtwarzanie do elementu wideo:

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

Skąd pochodzi przeglądanie w tym przypadku? To znaczy, jeśli to nie jest JS, to proszę. –

-1

Chrome go wyłączyć. https://bugs.chromium.org/p/chromium/issues/detail?id=159336 Nawet gra jQuery() jest zablokowana. Chcą, aby użytkownik go zainicjował, aby można było zaoszczędzić przepustowość.

+3

jQuery nigdy nie miał metody "play". Dowolna metoda "play", którą wywołujesz, nie jest dostarczana przez jQuery. – Sheepy

25

Możesz dodać atrybuty "wyciszony" i "autoplay", aby włączyć autoodtwarzanie na urządzeniach z Androidem.

np.

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

+6

Dzięki. ! To jest poprawna odpowiedź od teraz. dodawanie "wyciszonych" utworów, takich jak urok. w tej chwili nie są dostępne żadne inne opcje, ponieważ przeglądarka wymaga gestu użytkownika do odtwarzania wideo, w przeciwnym razie nie może. –

+1

Dla wideo bez dźwięku jest to idealne rozwiązanie, dziękuję! –

+0

dla Chrome 51, Android 7 to nie działa –

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

I Wypróbowaliśmy kilka atrybutów, które dodałeś powyżej, ale żadne nie powodują autoodtwarzania wideo na moim telefonie lub tablecie z Androidem Samsung. ("wyciszony" robi mi sztuczkę, jak opisano w innej odpowiedzi.) – Arjan

0

Ważna uwaga: Należy pamiętać, że jeśli Google Chrome Oszczędzanie danych jest włączona w ustawieniach Chrome, następnie Autoodtwarzanie zostanie wyłączony.

Powiązane problemy