Javascript 音频播放器启动时需要运行PHP脚本

Javascript 音频播放器启动时需要运行PHP脚本,javascript,php,Javascript,Php,我正在为一家电台制作一个网站。 我花了一段时间才找到一个不错的脚本,它可以从流中提取元数据,这样我就可以把它放在播放器下面的站点上。 所以我从一些比我聪明得多的人那里得到了PHP代码;) PHP脚本给出如下内容:string(15)“Toto-仅限您” 现在我面临两个问题 我需要Php脚本在播放器(脚本播放器)运行(单击播放按钮)时每60秒定时运行一次 PHP脚本吐出的值需要修剪,以不显示文本的字符串(15)部分 对于你们这些巫师来说,这可能是小菜一碟,但我在这里找不到实现这一点的方法。如果有人

我正在为一家电台制作一个网站。 我花了一段时间才找到一个不错的脚本,它可以从流中提取元数据,这样我就可以把它放在播放器下面的站点上。 所以我从一些比我聪明得多的人那里得到了PHP代码;)

PHP脚本给出如下内容:string(15)“Toto-仅限您”

现在我面临两个问题

  • 我需要Php脚本在播放器(脚本播放器)运行(单击播放按钮)时每60秒定时运行一次
  • PHP脚本吐出的值需要修剪,以不显示文本的字符串(15)部分
  • 对于你们这些巫师来说,这可能是小菜一碟,但我在这里找不到实现这一点的方法。如果有人能给我任何建议,我将不胜感激

    有关您的信息: 这是组成播放器的脚本代码:

    <!--  RADIO PLAYER CODE -->
    <script src="https://hosted.muses.org/mrp.js"></script>
    <script type="text/javascript">
    var isMobile = {
        Android: function() {
            return navigator.userAgent.match(/Android/i);
        },
        BlackBerry: function() {
            return navigator.userAgent.match(/BlackBerry/i);
        },
        iOS: function() {
            return navigator.userAgent.match(/iPhone|iPad|iPod/i);
        },
        Opera: function() {
            return navigator.userAgent.match(/Opera Mini/i);
        },
        Windows: function() {
            return navigator.userAgent.match(/IEMobile/i);
        },
        any: function() {
            return (isMobile.Android() || isMobile.BlackBerry() || isMobile.iOS() || isMobile.Opera() || isMobile.Windows());
        }
    };
     if( isMobile.any() ) {
    MRP.insert({
    'url':'http://live.radiorijen.nl/lq',
    'codec':'mp3',
    'volume':100,
    'autoplay':false,
    'buffering':5,
    'title':'Radio Rijen LQ',
    'welcome':'Welkom bij...',
    'wmode':'transparent',
    'skin':'alberto',
    'width':250,
    'height':95
    });} 
    else
    MRP.insert({
    'url':'http://live.radiorijen.nl/hq',
    'codec':'mp3',
    'volume':100,
    'autoplay':false,
    'buffering':5,
    'title':'Radio Rijen HQ',
    'welcome':'Welkom bij...',
    'wmode':'transparent',
    'skin':'alberto',
    'width':250,
    'height':95
    });
    
    </script>
    <!-- ENDS RADIO PLAYER CODE -->
    
    
    var isMobile={
    Android:function(){
    返回navigator.userAgent.match(/Android/i);
    },
    黑莓:函数(){
    返回navigator.userAgent.match(/BlackBerry/i);
    },
    iOS:function(){
    返回navigator.userAgent.match(/iPhone | iPad | iPod/i);
    },
    Opera:函数(){
    返回navigator.userAgent.match(/Opera-Mini/i);
    },
    Windows:function(){
    返回navigator.userAgent.match(/IEMobile/i);
    },
    any:function(){
    返回(isMobile.Android()| | isMobile.BlackBerry()| | isMobile.iOS()| | isMobile.Opera()| | isMobile.Windows());
    }
    };
    if(isMobile.any()){
    MRP.insert({
    “url”:”http://live.radiorijen.nl/lq',
    “编解码器”:“mp3”,
    "卷":100,
    “自动播放”:错误,
    “缓冲”:5,
    “标题”:“Rijen LQ电台”,
    “欢迎”:“Welkom bij…”,
    'wmode':'transparent',
    “皮肤”:“阿尔贝托”,
    “宽度”:250,
    身高:95
    });} 
    其他的
    MRP.insert({
    “url”:”http://live.radiorijen.nl/hq',
    “编解码器”:“mp3”,
    "卷":100,
    “自动播放”:错误,
    “缓冲”:5,
    ‘标题’:‘日仁电台总部’,
    “欢迎”:“Welkom bij…”,
    'wmode':'transparent',
    “皮肤”:“阿尔贝托”,
    “宽度”:250,
    身高:95
    });
    
    Php脚本:

    <?php
    
        /**
         * Please be aware. This gist requires at least PHP 5.4 to run correctly.
         * Otherwise consider downgrading the $opts array code to the classic "array" syntax.
         */
        function getMp3StreamTitle($streamingUrl, $interval, $offset = 0, $headers = true)
        {
            $needle = 'StreamTitle=';
            $ua = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.110 Safari/537.36';
    
            $opts = [
                'http' => [
                    'method' => 'GET',
                    'header' => 'Icy-MetaData: 1',
                    'user_agent' => $ua
                ]
            ];
    
            if (($headers = get_headers($streamingUrl)))
                foreach ($headers as $h)
                    if (strpos(strtolower($h), 'icy-metaint') !== false && ($interval = explode(':', $h)[1]))
                        break;
    
            $context = stream_context_create($opts);
    
            if ($stream = fopen($streamingUrl, 'r', false, $context))
            {
                while($buffer = stream_get_contents($stream, $interval, $offset)) {
                    if (strpos($buffer, $needle) !== false)
                    {
                        fclose($stream);
                        $title = explode($needle, $buffer)[1];
                        return substr($title, 1, strpos($title, ';') -2 );
                    }
    
                    $offset += $interval;
                }
            }
        }
    
        var_dump(getMp3StreamTitle('http://live.radiorijen.nl/hq', 19200));
    
        echo "\n\n";
    
    ?>
    
    
    
  • 我会利用JS/JQuery每60秒执行一次对PHP的调用。这可以由播放机或
    setInterval
    链接

  • 编辑
    var\u转储(getMp3StreamTitle('http://live.radiorijen.nl/hq', 19200));并确定输出的格式。您可以使用
    echo
    printf
    var\u dump()
    为您提供了额外的细节


  • 你开始编码了吗?StackOverflow是一个关于编程问题的网站。如果您不能向我们显示任何代码,我们将无法帮助您。感谢Kevin指出这一点。我已经用我正在使用的代码编辑了上面的条目。可能不是最好的代码,但它似乎做了它必须做的,现在让他们发挥好…我已经解决了PHP脚本输出原始字符串的问题。刚刚用ECHO替换了VAR_DUMP.)1个失败,1个失败。你应该将你的解决方案作为答案发布。这将帮助其他可能有同样问题的人。双赢。你解决了自己的问题,也帮助了别人。:)我一直在考虑使用sleep(60)并让PHP脚本自己重新运行的选项,但是您的建议是使用ajax来执行它可能会更好。我将四处寻找一些代码,这些代码允许我启动并运行计时器或停止php执行。