【问题标题】:Youtube Api playVideo method doesn't work on some mobile devicesYoutube Api playVideo 方法在某些移动设备上不起作用
【发布时间】:2014-12-26 20:10:40
【问题描述】:

我正在尝试创建一个移动网站,点击图片后播放 youtube 视频。

我已经在多个 Android 手机/版本上进行了测试,但在某些版本上并没有达到预期的效果。

我的意思是它停止缓冲并且永远无法播放视频。我注意到的另一件事是,播放器在用户触发视频播放后工作,而不是以编程方式工作。如果我直接显示 youtube 播放器,则更详细,用户单击播放视频,然后单击按钮/图像播放另一个视频。

我在这里发布了我使用JsFiddle的测试页面

$(document).ready(function () {

// Caching jQuery objects
var $body = $('body'),
    $log = $('#log'),
    $yt = $('#ytplayer'),
    $ytwrap = $('#ytwrapper'),
    $choices = $('#choices');


// This code loads the YouTube API
var tag = document.createElement('script');
tag.src = "https://www.youtube.com/iframe_api";
$body.append(tag);

// This will become the player object when the API is ready
var player;

// See what kind of device we're using
var userAgent = navigator.userAgent.toLowerCase();
var isAndroid = userAgent.indexOf('android') > -1;
var isIpad = userAgent.indexOf('ipad') > -1;
var isIphone = userAgent.indexOf('iphone') > -1;


window.onYouTubeIframeAPIReady = function onYouTubeIframeAPIReady() {

    player = new YT.Player('ytplayer', {
        videoId: videos[0],
        playerVars: {
            allowfullscreen: 'allowfullscreen',
            playsinline: 0
        },
        events: {
            'onReady': onPlayerReady,
                'onStateChange': onPlayerStateChange
        }
    });


    window.player = player;
    //hide player 
  slidePlayer(false);

};


function onPlayerStateChange(event) {

    // When a video starts playing,
    // enable the fake fullscreen mode on Android & iPad
    if (event.data == YT.PlayerState.PLAYING) {
        if (isIpad) {
            fakeFullScreen(true);
        } else if (isAndroid) {
            fakeFullScreen(true);
        }
    }

    // On pause: hide the player, show thumbs
    if (event.data == YT.PlayerState.PAUSED) {

        if (isAndroid) {
            // Exit fullscreen
            fakeFullScreen(false);

            // Scroll back to choices
            window.scrollTo(0, playerTop);
        } else if (isIpad) {
            fakeFullScreen(false);
            window.scrollTo(0, playerTop);
        } else if (isIphone) {
            slide(false);
        }
    }
}



$('#vstImageAd .imageWrap img').click(function (e) {

    e.preventDefault();

    var $this = $(this);

    if (player) {

        $this.css("display", "none");
        slidePlayer(true);

        player.playVideo();
    }

});


// When a thumb image is pushed, start the video
$('#choices .playthumb img').click(function (e) {

    var $this = $(this),
        nr = parseInt($this.data('nr'));

    if (!videos[nr]) nr = 1;

    player.loadVideoById(videos[nr]);

    // Hide the thumbs
    slide(true);
 });
});

【问题讨论】:

    标签: javascript android video mobile youtube


    【解决方案1】:

    您正在使用的某些功能(player.playVideo())似乎在移动设备中被禁用。 在我的情况下,在某些 Android 设备中使用 player.playVideo() 后,即使在点击播放器后也不会播放视频

    https://developers.google.com/youtube/iframe_api_reference?hl=zh-TW#Mobile_considerations

    自动播放和脚本播放

    HTML5 元素,在某些移动浏览器(例如 Chrome 和 Safari),仅允许播放由 用户交互(例如点击播放器)。

    由于这个限制,自动播放等功能和参数, playVideo()、loadVideoById() 不适用于所有移动环境**

    【讨论】:

      猜你喜欢
      • 2019-03-01
      • 2021-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多