【问题标题】:Player not able to autoplay on load播放器无法在加载时自动播放
【发布时间】:2019-10-18 06:37:15
【问题描述】:

我正在尝试在页面加载时启动 DZ 播放器,它会直接播放我的流程。

我可以使用DZ.player.playTracks() 启动播放器、登录、将曲目加载到播放器,但它实际上并没有开始播放歌曲(应该如此)。

DZ.player.isPlaying() 在调用DZ.player.playTracks() 之后是undefined

我需要手动单击一次播放按钮(Deezer 加载的小部件中的那个),然后才能使用DZ.player.play()DZ.player.pause()DZ.player.playTracks() 方法。

我的最终目的是使用隐藏播放器,所以我无法点击那个小部件按钮。

我在控制台中有一些类似这样的错误(不确定是否相关):

内容安全策略指令“upgrade-insecure-requests”在仅报告策略中被忽略。

内容安全策略指令“upgrade-insecure-requests”在仅报告策略中被忽略。 player.php?channel=http://localhost:8080/dz-custom/channel.html&app_id=1234XXXX&emptyPlayer=true:1

编辑:这是我从 (player_invisible.html) 使用的代码

<!DOCTYPE html>
<html lang="en">
<head>
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/jquery-ui.min.js"></script>
    <script type="text/javascript" src="https://e-cdns-files.dzcdn.net/js/min/dz.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/js-cookie/2.2.1/js.cookie.min.js" integrity="sha256-oE03O+I6Pzff4fiMqwEGHbdfcW7a3GRRxlL+U49L5sA=" crossorigin="anonymous"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/js-cookie/2.2.1/js.cookie.min.js" integrity="sha256-oE03O+I6Pzff4fiMqwEGHbdfcW7a3GRRxlL+U49L5sA=" crossorigin="anonymous"></script>
    <script src="/dz-custom/tools.js"></script>
    <style type="text/css">
        .progressbarplay {
            cursor:pointer;overflow: hidden;height: 8px;margin-bottom: 8px;background-color: #F7F7F7;background-image: -moz-linear-gradient(top,whiteSmoke,#F9F9F9);background-image: -ms-linear-gradient(top,whiteSmoke,#F9F9F9);background-image: -webkit-gradient(linear,0 0,0 100%,from(whiteSmoke),to(#F9F9F9));background-image: -webkit-linear-gradient(top,whiteSmoke,#F9F9F9);background-image: -o-linear-gradient(top,whiteSmoke,#F9F9F9);background-image: linear-gradient(top,whiteSmoke,#F9F9F9);background-repeat: repeat-x;filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f5f5f5',endColorstr='#f9f9f9',GradientType=0);-webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);-moz-box-shadow: inset 0 1px 2px rgba(0,0,0,0.1);box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);-webkit-border-radius: 6px;-moz-border-radius: 6px;border-radius: 6px;
        }
        .progressbarplay .bar {
            cursor:pointer;background: #4496C6;width: 0;height: 8px;color: white;font-size: 12px;text-align: center;text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);-webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);-moz-box-shadow: inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);-webkit-box-sizing: border-box;-moz-box-sizing: border-box;box-sizing: border-box;-webkit-transition: width .6s ease;-moz-transition: width .6s ease;-ms-transition: width .6s ease;-o-transition: width .6s ease;transition: width .6s ease;
        }
    </style>
</head>
<body>
<div id="dz-root"></div>
<div id="controlers">
    <input type="button" onclick="DZ.player.playAlbum(302127); return false;" value="Play Daft Punk - Discovery"/>
    <input type="button" onclick="DZ.player.playAlbum(301775); return false;" value="Play Daft Punk - Homework"/>
    <br/>
    <input type="button" onclick="DZ.player.play(); return false;" value="play"/>
    <input type="button" onclick="DZ.player.pause(); return false;" value="pause"/>
    <input type="button" onclick="DZ.player.prev(); return false;" value="prev"/>
    <input type="button" onclick="DZ.player.next(); return false;" value="next"/>
    <br/>
    <input type="button" onclick="DZ.player.setVolume(20); return false;" value="set Volume 20"/>
    <input type="button" onclick="DZ.player.setVolume(80); return false;" value="set Volume 80"/>
    <br/><br/><br/>
</div>
<div id="slider_seek" class="progressbarplay" style="">
    <div class="bar" style="width: 0%;"></div>
</div>
<script>
    $(document).ready(function(){
        $("#controlers input").attr('disabled', true);
        $("#slider_seek").click(function(evt,arg){
            var left = evt.offsetX;
            console.log(evt.offsetX, $(this).width(), evt.offsetX/$(this).width());
            DZ.player.seek((evt.offsetX/$(this).width()) * 100);
        });
    });
    function event_listener_append() {
        var pre = document.getElementById('event_listener');
        var line = [];
        for (var i = 0; i < arguments.length; i++) {
            line.push(arguments[i]);
        }
        pre.innerHTML += line.join(' ') + "\n";
    }
    //get token
    var utoken = Cookies.get('utoken');
    console.log(utoken);
    function onPlayerLoaded() {
        $("#controlers input").attr('disabled', false);
        event_listener_append('player_loaded');
        DZ.Event.subscribe('current_track', function(arg){
            event_listener_append('current_track', arg.index, arg.track.title, arg.track.album.title);
        });
        DZ.Event.subscribe('player_position', function(arg){
            event_listener_append('position', arg[0], arg[1]);
            $("#slider_seek").find('.bar').css('width', (100*arg[0]/arg[1]) + '%');
        });
 
        DZ.Event.subscribe('track_end', function() {
            event_listener_append('track_end');
        });
    }

    function login() {
        DZ.login(function (response) {
            if (response.authResponse) {
                console.log('Welcome!  Fetching your information.... ');
                DZ.api('/user/me', function (response) {
                    console.log('Good to see you, ' + response.name + '.');
                });
                utoken = response.authResponse.accessToken; 
                Cookies.set('utoken', utoken)
            } else {
                console.log('User cancelled login or did not fully authorize.');
            }
        }, { perms: 'email, manage_library,offline_access' });
    };
    document.addEventListener('DOMContentLoaded', function() {
        DZ.init({
            appId  : 'MY_APP_ID',
            channelUrl : 'http://localhost:8080/dz-custom/channel.html',
            player : {
                onload : onPlayerLoaded
            }
        });
        DZ.ready(function(sdk_options){
            if(!utoken || utoken== "null") {
                console.log('not logged'); 
                login();
            } else {
                console.log("player ready");
                DZflow('start');
            }
        });
    });
    function DZflow(fn){
        DZ.api('/user/MY_USER_ID/flow', 'GET',{access_token: utoken},function (response) {
                console.log(response);
                playMode = "flow";
                trackArr = response.data;
                var trackIds = trackArr.map(obj => { 
                    var rObj = [];
                    rObj.push(obj['id']); 
                    return rObj;
                });
                switch(fn){
                    case 'start':
                        console.log('Starting flow');
                        DZ.player.playTracks(trackIds);
                        break;
                    case 'add':
                        console.log('Adding songs to flow');
                        DZ.player.addToQueue(trackIds);
                        break;
                    default:
                        DZ.player.playTracks(trackIds);
                        console.log('unknown DZflow fn',fn)
                }
                                
            }
        );
    }
        
</script><br/>
event_listener : <br/>
<pre id="event_listener" style="height:100px;overflow:auto;"></pre>
</body>
</html>

有人遇到过这个问题吗?我在播放器的初始化过程中遗漏了什么吗?

【问题讨论】:

  • 你可以在这里使用stackoverflow分享你的代码sn-p功能
  • @ChickenSoups,你知道我应该根据这段代码寻找什么吗?
  • 我无法运行你的sn-p,如果你能提供一个可运行的sn-p或使用第三方网站如plunk或jsfildler会更容易
  • 遇到同样的问题。我发现它只发生在不可见的播放器中,并且只发生在 chrome 中。所以最可能的原因是最近对跨域资源的自动播放限制。仍在尝试找到解决方法。

标签: javascript sdk localhost deezer


【解决方案1】:

确保您的 SDK 是 ready

对于错误upgrade-insecure-requests问题,您可以查看信息here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-07
    • 1970-01-01
    • 2022-01-19
    • 2019-08-13
    相关资源
    最近更新 更多