2014-04-23 23 views
13

Chcę wykryć, czy telefon komórkowy/tablet może odtwarzać strumieniowanie na żywo HTTP (m3u8).Wykrywanie ruchu na żywo przez HTTP w telefonach komórkowych

Jestem obecnie badania z tego skryptu:

function isHLSEnabled() { 
    var videoElement = document.createElement('video'), 
     canPlayAppMpeg = videoElement.canPlayType('application/x-mpegURL'), 
     canPlayAppleMpeg = videoElement.canPlayType('vnd.apple.mpegURL'); 

    return (
     (canPlayAppMpeg == 'probably' || canPlayAppMpeg == 'maybe') 
     || (canPlayAppleMpeg == 'probably' || canPlayAppleMpeg == 'maybe') 
    ); 
} 

Ale to nie działa dobrze na niektórych przeglądarkach Samsung (Stock, Delfin, itp) - zwraca false (ponieważ canPlayTypes są puste ciągi) jednak jest w stanie odtworzyć wideo.

Czy są jakieś rozwiązania kuloodporne (ish) do wykrywania tego rodzaju obsługi przesyłania strumieniowego?

+0

Jest jeszcze problem na Androidzie 5.0 i Android 5.1 z przeglądarkami giełdowych. Chrome gra dobrze. – easwee

+0

Nie próbowałem tego, ale czy działa, jeśli ustawisz src elementu wideo na strumień src i sprawdź, czy wideo jest odtwarzane? – Nimmi

Odpowiedz

1

Nie jestem pewien, czy w tym momencie dostępne jest rozwiązanie kuloodporne.

Stosowanie metody elementu wideo to jedyna rzecz, która naprawdę "działa". Istnieje około +/- 5/6 formatów multimediów, które mają wsparcie ze strony nowoczesnych przeglądarek.

W zasadzie tworzysz listę formatów, które chcesz obsłużyć i przetestować na nich. Metoda canPlayType pozwala również określić, który kodek. Co należy zrobić, ponieważ samo testowanie WebM może nie doprowadzić do pożądanego rezultatu, na przykład:

element.canPlayType('video/webm; codecs="vp9"').

Po wykonaniu tej czynności powinien otrzymać generalnie otrzymać trzy różne odpowiedzi: "prawdopodobnie", "mabye" lub "" (pusty ciąg oznacza: nieobsługiwany).

Niektóre środki mogą okazać się przydatne:

Mozilla przedstawia listę głównych formatów stream/kodeka:

Mozilla Media Format List

modernizr to ramy, które będą testować wsparcie dla większości formatów wideo HTML5 . Możesz również rzucić okiem na ich kod źródłowy do wykrywania wideo html5.

Modernizr HTML video detect