HTML5 Video - сниффинг кодека с помощью canPlayType - PullRequest
1 голос
/ 11 ноября 2011

Я являюсь разработчиком мобильного веб-javascript, и мы обнаружили, что некоторые Android не будут воспроизводить видео в формате mp4, созданное в контейнере mp4, поэтому у нас была логика, указывающая на версии 3gp. Теперь новые устройства Android (Samsung Ace, Kindle Fire) не поддерживают контейнер 3GP.

Сейчас я изучаю использование метода Javascript DOM canPlayType (), у меня возникают проблемы с определением строк, которые туда входят. Я беру примеры из спецификации HTML5 W3C и других источников.

С помощью следующего кода (взятого из другого вопроса) я получаю смешанные результаты, потому что считаю, что я тестирую строку, которая может не соответствовать нашим файлам, созданным вручную / qt-faststart / ffmpeg.

Я получаю ложь на всех 3 на Samsung Vibrant, но он хорошо воспроизводит все видео.

    var testEl = document.createElement( "video" ),
        mpeg4, h264, webm;
    if ( testEl.canPlayType ) {
        // Check for MPEG-4 support
        var typeStr = testEl.canPlayType( "video/mp4; codecs=\"mp4v.20.8\"" );
        mpeg4 = typeStr !== "";

        // Check for h264 support
        typeStr = testEl.canPlayType( "video/mp4; codecs=\"avc1.42E01E\"" )
            || testEl.canPlayType( "video/mp4; codecs=\"avc1.42E01E, mp4a.40.2\"" )
        h264 = typeStr !== "";
        // Check for Webm support
        typeStr = testEl.canPlayType( "video/webm; codecs=\"vp8, vorbis\"" );
        webm = typeStr !== "";
    }
    alert("mpeg4 = "+mpeg4+"\nh264 = "+h264+"\nwebm = "+webm);
...