尝试在随机时间播放随机歌曲(学习音乐决赛:))

Posted

技术标签:

【中文标题】尝试在随机时间播放随机歌曲(学习音乐决赛:))【英文标题】:Trying To Play Random Song at Random Time (To Study For Music Final :)) 【发布时间】:2013-05-28 00:07:05 【问题描述】:

这里是文件。现在,我不断从警报中收到一条消息,即 track 变量未定义。似乎 php 工作,因为如果我直接进入 php 链接,并手动输入 GET 变量,我会得到返回的歌曲。另外,我正在寻找一种方法来获取随机 10 秒的歌曲片段(例如我的音乐老师如何测试我们)。我想到的方法是将持续时间除以 10 并乘以一个随机数,然后使用 setineterval 来查看 currenttime() 是否比初始音频时间多 10 秒。

//index.php
<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Music Final Quiz</title>
    <link rel="stylesheet" href="style.css">
</head>
<body>
    <audio src="" id="player"></audio>
    <button id="change_track">Play A Different Track</button>
    <script src="jquery.js"></script>
    <script src="script.js"></script>
</body>
</html>

//script.js
var player = document.getElementById("player");
var changeTrack = document.getElementById("change_track");
var previousNumber = null;
var timeStart = null;

function loadTrack()
    var randomNumber = Math.floor(Math.random()*11);
    if(randomNumber != 0 && randomNumber != previousNumber)
        previousNumber = randomNumber;
    else
        randomNumber = 1;
    
    var track = $().get("generate_song.php?track_number=" + randomNumber);
    player.src = track;
    player.load();
    // player.currentTime() = (player.duration/10) * Math.floor(Math.random()*11);
    player.play();
    alert(track);


window.addEventListener("load", loadTrack);
changeTrack.addEventListener("click",loadTrack);

//generate_song.php
$directory = "Audio_Files";
$files = scandir($directory);
$requested_song = $_GET["track_number"];

echo $files[$requested_song + 1]."<br/>";

【问题讨论】:

嗯,这是拖延的好方法。 大声笑测试是在星期五 【参考方案1】:

player.currentTime 是属性,而不是函数,所以它应该是:

player.currentTime = (player.duration/10) * Math.floor(Math.random()*11);

对于间隔部分,我会添加间隔并检查歌曲是否暂停:

    function loadTrack()
        var randomNumber = Math.floor(Math.random()*11);
        if(randomNumber != 0 && randomNumber != previousNumber)
            previousNumber = randomNumber;
        else
            randomNumber = 1;
        
        var track = $().get("generate_song.php?track_number=" + randomNumber);
        player.src = track;
        player.load();
        player.currentTime = (player.duration/10) * Math.floor(Math.random()*11);
        player.play();
        playTenSeconds = setInterval(function()
            if(player.paused === false)
                player.pause();
                alert(track);
                clearInterval(playTenSeconds);
            else
                player.play();
            
        , 10);
    

【讨论】:

以上是关于尝试在随机时间播放随机歌曲(学习音乐决赛:))的主要内容,如果未能解决你的问题,请参考以下文章

带有 XNA 的随机音乐播放器

Qt音乐播放器

恒生云融2020应届生JAVA笔试题:随机播放歌曲

歌曲播放的随机算法的探讨

音乐播放器

算法—— 随机音乐的播放算法