【问题标题】:user-initiated Play button not triggering the video to start automatically in iOS用户启动的播放按钮不会触发视频在 iOS 中自动启动
【发布时间】:2012-02-03 06:40:49
【问题描述】:

我使用 flowplayer 在桌面上播放实时视频,对于触摸设备,我使用 flowplayer 的 ipad 插件在 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(); 来触发自动播放。我尝试了几种使用它的方法,但无法使其工作。我发现的唯一可能的方法是,当我在$(document).ready() 中调用authStream function,然后在$('#button1').click() 中使用$f().play(); 时,视频播放无需第二次点击即可在ipad 中播放视频。我想做同样的工作,但不想在$(document).ready() 中调用authStream function。我想做一些类似于我在示例代码中尝试的方式,并且还想在单击按钮时自动播放视频,而无需在 ipad 中第二次单击。现在我需要单击两次才能在触摸设备中播放视频。请任何人建议我可以尝试使该方法在 ios (ipad) 中工作的可能方法。

编辑: ipad html5 播放器中的播放控件似乎没有被触发。有什么方法可以通过#button1的点击触发html5播放器的播放按钮。我没有任何想法让它发挥作用。

【问题讨论】:

    标签: jquery ios ipad html flowplayer


    【解决方案1】:

    我从未在 iOS 上尝试过 Flowplayer(我只使用纯 HTML5 播放器),但我的经验是,内置播放器只有在播放事件被用户触发时才会启动。似乎没有办法获得真正的自动播放功能。

    编辑: 如果您想在点击播放按钮时发送 Ajax 请求,请尝试从 onStart 事件 (documentation) 调用您的 authStream 方法:

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

    【讨论】:

    • 这很好,没有真正的自动播放功能,但有办法通过 ajax 请求触发用户启动的播放按钮进行自动播放。因为如果我不执行 ajax 请求,那么 $f().play() 触发正常,但使用 ajax 请求则无法正常工作。
    • 这会在 ipad 中开始播放,但会在播放开始后立即停止。
    • 如果您为 Safari 启用开发者模式,是否有任何错误消息?
    • 否 Safari 的开发者模式下没有错误消息。我想这可能是因为我需要令牌来播放剪辑并且在 gettoken 中我正在调用 playvideo() 这可能会导致剪辑停止,没有得到任何解决。
    • 您是否仅将其用于检测 iOS 并在 iOS 上播放另一个 URL?为什么不在服务器端检测到呢?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多