0

这是一个专为个人使用而设计的项目。

我将JWPlayer安装到我的本地开发服务器上。这是我使用并验证的有效播放列表:

<rss version="2.0" xmlns:media="http://search.yahoo.com/mrss/">
    <channel>
        <title>oTunes Web App - Playlist</title>
        <item>
            <title>My Baby Loves Me by Martina McBride on Greatest Hits</title>
            <media:content url="07TheGift.mp3" duration="156" />
        </item>
    </channel>
</rss>

此播放列表不起作用:

<rss version="2.0" xmlns:media="http://search.yahoo.com/mrss/">
    <channel>
        <title>oTunes Web App - Playlist</title>
        <item>
            <title>My Baby Loves Me by Martina McBride on Greatest Hits</title>
            <media:content url="ajax.php?ajax=getMP3Version&track=38809" duration="156" />
        </item>
    </channel>
</rss>

ajax.php 已被开发用于处理所有 AJAX 请求,包括充当 MP3 文件的“代理”,因为 MP3 文件位于不可通过 Web 访问的目录(不同的驱动器)中。这是来自 ajax.php 的相关代码片段:

$initial = $_GET['initial'];
session_start();
echo $tracks->generatePlaylistString($_SESSION['last_results'], $initial);

这是来自 $tracks 类的相关代码:

        function generatePlaylistString($data, $initial) {
            $playlistData = $data;
            $firstToPlay = $initial;
            $round = 1;
            $addToPlaylist = false;
            $playlistString = '<rss version="2.0" xmlns:media="http://search.yahoo.com/mrss/">
    <channel>
        <title>oTunes Web App - Playlist</title>
';
            foreach($playlistData AS $item) {
                if ($item['TrackUniqueID'] == $firstToPlay) {
                    $addToPlaylist = true;
                }
                if ($addToPlaylist) {
                    $durationArray = explode(":", $item['TrackTotalDuration']);
                    $playlistString .= '        <item>
            <title>'.$item['TrackTitle'].' by '.$item['TrackArtist'].' on '.$item['TrackAlbum'].'</title>
            <media:content url="ajax.php?ajax=getMP3Version&track='.$item['TrackUniqueID'].'" duration="'.(($durationArray[0]*60)+$durationArray[1]).'" />
        </item>
';
                }
            }
            $playlistString .= '    </channel>
</rss>';
            return $playlistString;
        }

播放列表的格式正确,因为我用对静态文件(见上文)的调用替换了对代理 PHP 文件的调用,并且歌曲播放正确。我在浏览器中转到 PHP 页面,并提示我播放该文件(它也可以正确播放)。我使用 Firebug 来确认正在发出正确的调用和响应,而且它们都是正确的。但是,当我将对代理 PHP 页面的调用放入播放列表时,出现以下错误:

无法加载播放列表:播放列表文件不包含有效的播放列表

我不知道还能做什么,除了将所有 MP3 文件移动到 Web 可访问的目录中(出于控制和资源的原因,我不想这样做)。有什么帮助吗?

4

1 回答 1

2

改变:

<rss version="2.0" xmlns:media="http://search.yahoo.com/mrss/">
    <channel>
        <title>oTunes Web App - Playlist</title>
        <item>
            <title>My Baby Loves Me by Martina McBride on Greatest Hits</title>
            <media:content url="ajax.php?ajax=getMP3Version&track=38809" duration="156" />
        </item>
    </channel>
</rss>

至:

<rss version="2.0" xmlns:media="http://search.yahoo.com/mrss/" xmlns:jwplayer="http://developer.longtailvideo.com/trac/wiki/FlashFormats">
    <channel>
        <title>oTunes Web App - Playlist</title>
        <item>
            <title>My Baby Loves Me by Martina McBride on Greatest Hits</title>
            <media:content url="ajax.php?ajax=getMP3Version&track=38809" duration="156" />
            <jwplayer:provider>sound</jwplayer:provider>
        </item>
    </channel>
</rss>

那应该行得通。

于 2012-09-04T03:37:46.930 回答