инициируемая пользователем кнопка воспроизведения не запускает видео автоматически в iOS - PullRequest
1 голос
/ 03 февраля 2012

Я использую flowplayer для воспроизведения живого видео на рабочем столе, а для сенсорных устройств я использую плагин ipad для flowplayer для воспроизведения видео в видеоплеере HTML5. Вот рабочий процесс игрока, которым я занимаюсь:

function authStream()
{
        $.ajax({
            dataType: 'jsonp',                  
            data: 'jsonp=getToken',
            jsonp: 'jsonp_callback',
            url:'http://server/getToken?channelId=id of the channel played',
            success:function(data){
            }
        });
        return;
}
function getToken(data)
{
        if(data.ErrorCode == -1){
            alert(data.message);
            return;                             
        }
        if(!data.tk) {
            alert('User not authorized to watch the show.');
            return;
        }

        var token = "?token="+data.tk;
        playVideo(token);   
        return; 
}

$('#button1').click(function(){ 
    authStream();   
}); 

function playVideo(token){
    var url;
    if(isIpad || isIphone) {
        url = 'http://server/live/_definst_/name of video/playlist.m3u8'+token;
    } else {
        url = 'name of video.sdp'+token;
    }

$f("ipad", {'src': "flowplayer-3.2.7.swf", 'wmode': 'opaque'}, {
    clip: {
        url:url,
        autoPlay: true,
        live: true,
        provider: 'rtmp',
        scaling: 'orig'
    },
    plugins: {
        rtmp: {
            url: 'flowplayer.rtmp-3.2.3.swf',
            netConnectionUrl:'rtmp://server/live/_definst_/'
        }

    },  
    onLoad : function() {
        $f().play();
    }   
}).ipad();

}

Теперь проблема в том, что не работает автопроигрывание видео в ios (ipad, iphone). Я знаю, что автозапуск по умолчанию запрещен для этих устройств. Для этого я использую $f().play();, чтобы вызвать автозапуск. Я попробовал несколько способов его использования, но не смог заставить его работать. Единственный возможный способ, который я нашел, - это когда я звоню authStream function в $(document).ready() и затем использую $f().play(); в $('#button1').click(), видео воспроизводится без необходимости повторного нажатия для воспроизведения видео в ipad. Я хочу сделать то же самое, но не хочу звонить authStream function в $(document).ready(). Я хочу сделать что-то наподобие того, как я пробовал в примере кода, а также хочу автоматически воспроизводить видео по нажатию кнопки без необходимости повторного нажатия в ipad. Теперь мне нужно дважды щелкнуть, чтобы воспроизвести видео на сенсорных устройствах. Пожалуйста, кто-нибудь подскажет, как можно заставить этот метод работать в ios (ipad).

РЕДАКТИРОВАТЬ: Кажется, управление воспроизведением в плеере ipad html5 не срабатывает. Есть ли способ вызвать кнопку воспроизведения html5 player нажатием #button1. У меня нет идеи заставить его работать.

1 Ответ

0 голосов
/ 05 февраля 2012

Я никогда не пробовал Flowplayer на iOS (я использовал только проигрыватель HTML5), но мой опыт заключается в том, что встроенный проигрыватель запускается только в том случае, если событие воспроизведения запускается пользователем. Похоже, что нет способа получить реальную функциональность автоигры.

Edit: Если вы хотите отправить свой Ajax-запрос по нажатию кнопки воспроизведения, попробуйте вызвать метод authStream из события onStart ( документация ):

$f("ipad", {'src': "flowplayer-3.2.7.swf", 'wmode': 'opaque'}, {
    clip: {
        url:url,
        autoPlay: true,
        live: true,
        provider: 'rtmp',
        scaling: 'orig',
        onStart: function() {
            authStream();
        }
    },
    plugins: {
        rtmp: {
            url: 'flowplayer.rtmp-3.2.3.swf',
            netConnectionUrl:'rtmp://server/live/_definst_/'
        }

    },  
    onLoad : function() {
        $f().play();
    }   
}).ipad();
...