这是一个专为个人使用而设计的项目。
我将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 可访问的目录中(出于控制和资源的原因,我不想这样做)。有什么帮助吗?