Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   не работает видео android (https://javascript.ru/forum/misc/54333-ne-rabotaet-video-android.html)

cyber 13.03.2015 13:49

не работает видео android
 
На андроиде в хроме и опере вместо видео чёрный экран, видео может в один момент появится, может нет.
В лисе все срабатывает моментально https://jsfiddle.net/0du7LmfL/3/embedded/result/

cyber 13.03.2015 16:07

Продубливаровал вопрос http://stackoverflow.com/questions/2...obile-devieces

cyber 13.03.2015 16:49

Решение нашел, выложил на stackoverflow

ruslan_mart 13.03.2015 16:52

cyber, а если так:

var source = document.createElement('source'),
    video = document.createElement('video');
source.type = 'video/mp4; codecs="avc1.42E01E, mp4a.40.2"';
source.src = 'http://cyberua.16mb.com/player/data/video3.mp4';
video.appendChild(source);
document.body.appendChild(source);

cyber 13.03.2015 16:53

Ruslan_xDD, не, пробывал

cyber 13.03.2015 23:01

После кучи страданий эксперементов пришел к выводу что проблема в кодировки видео.

https://developer.mozilla.org/en-US/..._media_formats

Octane 13.03.2015 23:17

Может еще от одной проблемы предупрежу :)
В Safari 7-8 если audio/video элемент уже проигрывался и вызвать play синхронно со сменой src, то воспроизведение не начнется.
video.src = '…';
video.play(); // бесконечная загрузка
video.src = '…';
setTimeout(function () {
    video.play(); // работает
}, 0);

cyber 14.03.2015 00:12

Цитата:

Сообщение от Octane
Может еще от одной проблемы предупрежу

Может знаешь еще какие то баги, с видео ?)

Octane 14.03.2015 01:24

В том же safari не всегда срабатывает canplay, нужно подписываться на canplay и canplaythrough.

canPlayType может вернуть "no" вместо пустой строки.

cyber 14.03.2015 01:29

Цитата:

Сообщение от Octane
В том же safari не всегда срабатывает canplay, нужно подписываться на canplay и canplaythrough.

В firefox тоже веселье с canplay и canplaythrough они не срабатывают пока не вызвать play(), пришлось проверять по timeout если
video.readyState !== video.HAVE_ENOUGH_DATA

то

( function waitCanPlay() {

                if ( video.readyState == 4 ) {
                    return callback( null );
                }

                else if ( ++i == 15 ) {
                    return callback ( "Failed download video" );
                }

                setTimeout( waitCanPlay, 300 );
            } () );
        };


Часовой пояс GMT +3, время: 10:48.