使用 PHP 将标准输出上的 MP3 流式传输到 Jplayer

2023-12-06

我使用以下参数初始化 jplayer:

$jplayer.jPlayer('setMedia',{
  mp3: data.audioMP3,
  oga: data.audioOGA
});

假使,假设data.autdioMP3(以及它的 OGA 对应项)是 php 脚本的路径,例如:'http://myserver.local/playaudio.php?songID=99&format=mp3'

我挣扎的地方是playaudio.php。我想读取 MP3 文件并将其流式传输到 jplayer,而不透露音频的路径(这就是为什么我不使用音频文件的路径初始化 jplayer)。

类似的东西(部分取自读取文件的示例在 php 文档中):

<?php

$if ($validUser && file_exists($file){
     header('Content-Transfer-Encoding: binary');
     header('Content-Type: audio/mpeg');
     header('Expires: 0');
     header('Cache-Control: must-revalidate');
     header('Content-Length: ' . filesize($file));
     ob_clean();
     flush();
     readfile($file);
     exit;
}
?>

我认为这只是强制下载文件...这仍然会向用户显示文件的路径吗?是否有更好的选项可以将原始 mp3 数据流式传输给用户而不泄露您所知道的文件的路径?

Thanks!


由于您使用 javascript 来获取文件,其他人可以通过从浏览器(firebug、Chrome 的默认工具等)读取标头/文件请求来执行相同的操作。

保护文件不被下载的最佳方法是进行一系列检查以获取数据。它并不完美,但它会阻止除了最坚定的人之外的所有人。对于一些想法,请查看此页面Groovshark 的 API(这有点旧,缺少一些信息,所以它是完美的参考),或者只需访问 Grooveshark/Youtube 看看他们如何保护其内容。

通过巧妙地使用会话和良好的数据库,可以重新创建这种安全性。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 PHP 将标准输出上的 MP3 流式传输到 Jplayer 的相关文章

随机推荐