PHP Streaming MP3(PHP 流媒体 MP3)
问题描述
我的情况与提问的人非常相似:我可以使用 PHP 提供 MP3 文件吗?基本上我试图保护 mp3 文件不被直接下载,所以用户必须先通过 php 来获得身份验证.这是我的代码:
I have a very similar situation to the person who asked: Can I serve MP3 files with PHP? Basically I am trying to protect mp3 files from direct download, so users have to go through php to get authenticated first. Here's my code:
header('Content-type: audio/mpeg');
header('Content-length: ' . filesize($file));
header('X-Pad: avoid browser bug');
Header('Cache-Control: no-cache');
header("Content-Transfer-Encoding: binary");
header("Content-Type: audio/mpeg, audio/x-mpeg, audio/x-mpeg-3, audio/mpeg3");
readfile($file);
这是我的问题:该文件仅播放开头的一小部分(通过浏览器中的 Quicktime)然后停止 - Quicktime 似乎认为文件的长度仅与它管理的块一样长下载.当我重新加载时 - 它会播放一个稍微大一点的块 - 无论它设法下载到那个点.
Here's my problem: The file only plays a very small chunk of the beginning (via Quicktime in the browser) and then stops - Quicktime seems to think the length of the file is only as long as the chunk it managed to download. When I reload - it plays a slightly larger chunk - whatever it managed to download up to that point.
这是我发送的标头中的问题吗?我将如何流式传输这样的文件?如果 swf 正在从该文件中读取,会不会有问题?
Is that a problem in the headers I am sending? How would I stream such a file? Is it a problem if an swf is reading from that file?
谢谢!
谢谢大家的回答.尽管这些东西都不能完全解决问题,但它们中的许多都将我引向了正确的方向.非常感激.有关完整的解决方案,请参阅下面的答案
推荐答案
这就是诀窍.
$dir = dirname($_SERVER['DOCUMENT_ROOT'])."/protected_content";
$filename = $_GET['file'];
$file = $dir."/".$filename;
$extension = "mp3";
$mime_type = "audio/mpeg, audio/x-mpeg, audio/x-mpeg-3, audio/mpeg3";
if(file_exists($file)){
header('Content-type: {$mime_type}');
header('Content-length: ' . filesize($file));
header('Content-Disposition: filename="' . $filename);
header('X-Pad: avoid browser bug');
header('Cache-Control: no-cache');
readfile($file);
}else{
header("HTTP/1.0 404 Not Found");
}
这篇关于PHP 流媒体 MP3的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:PHP 流媒体 MP3
基础教程推荐
- 如何在 Laravel 5.3 注册中添加动态下拉列表列? 2021-01-01
- 在PHP中根据W3C规范Unicode 2022-01-01
- Cron Jobs 调用带有变量的 PHP 脚本 2022-01-01
- YouTube API v3 点赞视频,但计数器不增加 2022-01-01
- PHP 类:全局变量作为类中的属性 2021-01-01
- 如何替换eregi() 2022-01-01
- 有什么方法可以用编码 UTF-8 而不是 Unicode 返回 PHP`json_encode`? 2021-01-01
- PHP PDO MySQL 查询 LIKE ->多个关键词 2021-01-01
- 学说 dbal querybuilder 作为准备好的语句 2022-01-01
- 如何在 Laravel 中使用 React Router? 2022-01-01
