在php中读取mp3流并回显给客户端

2024-02-16

我想要实现的是一个页面,当客户端连接时,该页面不断地从本地ice-cast服务器读取(http://127.0.0.1:8000/stream.mp3),并将流回显给客户端,从那里,客户端可以在基本音频标签中播放它。

<?php
header("Content-Transfer-Encoding: binary"); 
header("Content-Type: audio/mpeg, audio/x-mpeg, audio/x-mpeg-3, audio/mpeg3");
header('Content-Disposition: attachment; filename="stream.mp3"');
header('X-Pad: avoid browser bug');
header('Cache-Control: no-cache');
print file_get_contents("http://127.0.0.1:443/stream.mp3");

使用这段代码,它只会消耗内存并且不会向客户端返回任何有用的内容,我正在考虑等待直到兆字节缓冲区已满,然后将其回显给客户端。但我不知道,所以是的。

请注意,我对 php 没有那么丰富的经验。谢谢!


file_get_contents尝试读取流直至结束,并且由于您尝试从广播服务器读取数据,因此不会结束。

如果可以选择 HTML5,则以下方法可能有效。

<audio autoplay>
  <source src="http://127.0.0.1:443/stream.mp3" type="audio/mpeg">      
</audio>

替代解决方案:

<?php
ob_start();
header("Content-Transfer-Encoding: binary"); 
header("Content-Type: audio/mpeg, audio/x-mpeg, audio/x-mpeg-3, audio/mpeg3");
header('Content-Disposition: attachment; filename="stream.mp3"');
header('X-Pad: avoid browser bug');
header('Cache-Control: no-cache');
$handle = fopen("http://127.0.0.1:443/stream.mp3");

while (($data = fread($handle, $bufferSize)) { //Buffer size needs to be large enough to not break audio up while getting the next part
      echo $data;
      ob_flush();
      flush();
      set_time_limit(30); // Reset the script execution time to prevent timeouts since this page will probably never terminate. 
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在php中读取mp3流并回显给客户端 的相关文章

随机推荐

  • Scala 关闭挂钩从未运行?

    scaladoc 为sys addShutdownHook says shutdown hooks are NOT guaranteed to be run 现在这是完全合理的 因为如果您向 JVM 发送 SIGKILL 或任何 Windo
  • 整数数组的ArrayList

    我正在尝试编写一个简单的游戏 其中敌人在网格上追逐玩家 我正在使用维基百科寻路页面上的简单寻路算法 这涉及创建两个列表 每个列表项包含 3 个整数 这是我尝试构建和显示这样一个列表的测试代码 当我运行以下代码时 它会为 ArrayList
  • R中随机选择一个样本

    我必须找到一种方法从集合 S 中随机选择 R 中的一个样本 集合 S 由 I1 集合中的样本组成 I1 lt c 1 2 3 4 5 6 s1 lt c 1 2 1 s2 lt c 1 5 6 s3 lt c 2 1 1 s4 lt c 5
  • JavaScript 中数组与对象的效率

    我有一个可能包含数千个对象的模型 我想知道存储它们并在获得单个对象的 id 后检索该对象的最有效方法是什么 id 是长数字 这是我正在考虑的两个选择 在选项一中 它是一个带有递增索引的简单数组 在选项 2 中 它是一个关联数组 也可能是一个
  • Spring MVC 控制器,如何在清空表单值时保留 BindingResult 错误

    我有一个使用 Spring MVC 控制器的 Web 表单 该表单由 Spring 验证 当出现验证错误时 Spring 会显示相同的表单 其中预先填写了用户输入的值以及验证错误 出于安全原因 我不希望表单预先填写用户输入的值 但我确实需要
  • 如何从 MVC3/Razor 中的操作获取响应“流”?

    我正在使用 MVC3 NET4 C 我需要使用 Razor 视图创建一些 XHTML 我通过一个动作来做到这一点 public ActionResult RenderDoc int ReportId A new document is cr
  • 升级时的注册表问题

    旧版本的安装程序是使用以下命令创建的InstallScope 每台机器 新版本的目的是InstallScope 每个用户 它还需要使用与旧版本创建的相同的注册表项 问题是 升级过程中这些注册表项下存储的任何值最终都会被旧版本存储的初始值覆盖
  • primefaces 日历:如何动态设置 Mindate

    我有两个 primefaces 日历控件 我希望当我从第一个日历中选择日期时 下一个日历注意日期应该从第一个日历的选定日期开始 例如 我选择了7 5 2013那么下一个日历应该禁用之前的所有日期8 5 2013这是我到目前为止所尝试过的 但
  • 匹配一行中的第 n 个单词

    在我使用的应用程序中 我无法选择比赛组 1 我可以使用的结果是正则表达式的完整匹配 但我需要第 5 个单词 jumps 作为匹配结果 而不是完整的匹配项 The Quick Brown Fox Jumps 4 The quick brown
  • SQL where field in vs. where field = 带有多个 or ?

    就性能而言 使用哪一个更好 关于可读性 可理解性 关于公认的标准 SELECT FROM Wherever WHERE Greeting IN hello hi hey OR SELECT FROM Wherever WHERE Greet
  • ios 上的外部键盘选项卡事件

    我的 iPad 应用程序屏幕之一有多个文本字段 在这几个文本字段上 会生成用于用户输入操作 决策 预填充信息等的弹出窗口 当使用默认的 ipad 键盘时 它工作正常 但是当我们尝试使用带有 Tab 键的外部键盘时 我得到了多个文本字段应该开
  • 用于闪亮 Python 3D 曲面图的 Phong 着色

    我正在尝试在 Python 中使用镜面着色创建美观的 3D 绘图 到目前为止 我已尝试将 Matplotlib 与 Mayavi 的 3D 轴和曲面图一起使用 例如来自 Mayavi surf 示例网页 结果看起来不错 在 Mayavi 中
  • 自动同步 Subversion 存储库和 Git 存储库

    我的项目在网络文件系统上有一个 Subversion 存储库 新团队希望使用 Git 访问它 并能够提交它并从中获取更新 我的想法是创建一个新的裸git svn在同一网络文件系统上克隆 Subversion 存储库 并确保这两个存储库始终彼
  • 如何更改附加到导航视图的子菜单的文本和图标的颜色?

    我试图弄清楚如何更改实际附加到导航视图的子菜单项的颜色 以下代码实际上来自 android studio 中可用的导航抽屉的默认模板 活动 主 抽屉 xml menu menu
  • 哪里有 Firefox 3.5 中位置感知浏览的 Javascript 代码示例?

    有谁知道我在哪里可以找到 Firefox 3 5 的新位置感知功能的一些 javascript 代码示例 Try hacks mozilla org http hacks mozilla org 2009 06 geolocation an
  • 检查两次之间的时间[重复]

    这个问题在这里已经有答案了 我只想检查当前时间是否在 2 次之间 到目前为止 我浏览了多个脚本 但所有脚本都包含日期 或者只是太困难 或者脚本只计算完整小时 如 6 或 7 而我需要检查小时和分钟 我很感激您的帮助 我想要的脚本设置是 be
  • 在 Elastic Beanstalk 上运行 npm install 时出现问题

    情况 我有一个 Laravel 5 4 应用程序 它使用 npm bower 和 gulp 作为前端 我已在部署时成功配置了所有内容 但是npm install or npm install production 在我的情况下是相同的 命令
  • jwt.decode() 收到意外的关键字参数“verify”

    我可以使用路由 api token 生成令牌 但之后无法使用它 之前一切正常 但现在我在 django Rest Framework 中遇到此错误 我不知道为什么 File home mathieu local share virtuale
  • Android - Intent.setType() 参数

    有谁知道该方法的所有可用参数 像 图像 或 文件 我在官方文档中没有找到该列表的线索 具体来说 我需要发送联系人 vcf 文件的意图 但输入 file vcf 并没有显示通过短信发送选项 sendIntent setData Uri par
  • 在php中读取mp3流并回显给客户端

    我想要实现的是一个页面 当客户端连接时 该页面不断地从本地ice cast服务器读取 http 127 0 0 1 8000 stream mp3 并将流回显给客户端 从那里 客户端可以在基本音频标签中播放它