在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流并回显给客户端 的相关文章

  • 如何从 Laravel 中的表中选择所有列名称?

    我试图从表中获取所有列名Teller 功能 public function getTableColumns tables return DB select DB raw SELECT COLUMN NAME DATA TYPE COLUMN
  • gmail 不断阻止 PHPmailer 登录

    我将在接下来的 8 小时内部署一个网站 而 Gmail 刚刚停止接受 PHPmailer 登录我的帐户 起初 它在测试过程中工作了几个小时 然后 它就停止工作了 我已经允许所有允许不太安全的应用程序从 gmail 登录 但它仍然不允许 ph
  • openssl_pkey_get_details($res) 不返回公共指数

    我在用着这个例子 https stackoverflow com a 12575951 2016196使用 php 生成的密钥进行 javascript 加密openssl图书馆 但是 details openssl pkey get de
  • 通过 Ajax 加载内容时,WORDPRESS 音频播放器未加载,MediaElement.js 未应用

    我正在创建一个 WordPress 主题 当我使用 ajax 加载内容时 它不会将 MediaElements js 应用于我的音频播放器 因此不会显示音频 我认为这是因为 MediaElement js 加载了 wp footer 并且此
  • Yii 使用 ajax 进行分页

    我需要使用ajax启用分页 我的代码 控制器 更新内容ajax function actionIndex dataProvider new CActiveDataProvider News array pagination gt array
  • 如何在响应ajax codeigniter后停止执行其他控制器

    我想知道如何在响应输出 json 数据后停止执行函数和涉及的其他控制器 就我这里的情况而言 我只是打电话test 函数于dashboard控制器 In dashboard构造函数将执行MY Login library In MY Login
  • 将“php”作为 shell 脚本执行时的自定义 php.ini 文件

    我在跑php作为 shell 脚本 我不确定 shell脚本 是否正确 该文件以 usr bin php 这很好用 但 MongoDB 类没有正确加载php ini文件 具有extension mongo so 未使用 我该如何使用它tha
  • 从 smarty 访问 PHP 文件的变量(本地或全局)

    我有一个 php 文件 其中包含一些本地和全局变量 例如 foo 从此文件中调用 smarty 对象 如何在不更改 PHP 文件的情况下从 smarty 脚本访问 foo Thanks 如果你有一个名为 BASE 的常量变量 并且定义如下
  • Symfony2 Assetic 和 Less Sourcemaps

    我不确定如何破解 assetic less 过滤器以输出源映射文件 我这里指的是LessFilterhttps github com kriswallsmith assetic blob master src Assetic Filter
  • 从 .phar 存档中提取文件

    对于 Phar 文件 我完全错过了一些东西 我正在安装一个需要 phpunit pdepend 和其他依赖项的项目 我将它们作为 phar 文件获取 但是 我无法使用命令行工具 php 命令 从中提取文件 我用谷歌搜索了这个问题 但没有发现
  • 在 PHP 中使用 phpseclib 时出现 RSA 问题

    我正在尝试在 phpseclib 中使用 RSA 实现 我认为在函数中执行一次代码并重新使用该函数会更容易 当我尝试向代码发送短信时 我收到一条错误消息 提示 解密错误 测试还让我意识到每次代码运行时密文都是不同的 所以我显然在那里做错了什
  • 覆盖控制器 Symfony 3.4/4.0

    我目前正在尝试覆盖 FOSUserBundle 中的控制器 在新的文档中 https symfony com doc 3 4 bundles override html https symfony com doc 3 4 bundles o
  • Woocommerce 结账自定义选择字段

    我有以下功能 将选择列表添加到 woo commerce 结账表单中 woocommerce form field airport pickup array type gt select class gt array airport pic
  • 跟踪用户何时点击浏览器上的后退按钮

    是否可以检测用户何时单击浏览器的后退按钮 我有一个 Ajax 应用程序 如果我可以检测到用户何时单击后退按钮 我可以显示适当的数据 任何使用 PHP JavaScript 的解决方案都是优选的 任何语言的解决方案都可以 只需要我可以翻译成
  • 如果循环中内存超出,我可以在 for 循环中抛出异常吗?

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 如何处理 foreach 循环中发生
  • Doctrine EntityManager 清除嵌套实体中的方法

    我想用学说批量插入处理 http doctrine orm readthedocs org en latest reference batch processing html为了优化大量实体的插入 问题出在 Clear 方法上 它表示此方法
  • 标准化 UTF-8 到底是什么?

    The 重症监护室项目 http userguide icu project org transforms normalization 现在也有一个PHP库 http us php net manual en class normalize
  • Laravel 中只向登录用户显示按钮

    如果我以 John 身份登录 如何才能只显示 John 的红色按钮而不显示 Susan 的红色按钮 测试系统环境 Win10 Laravel5 4 Mysql5 7 19 table class table table responsive
  • 内部 while 循环不工作

    这是我项目网页上的代码片段 这里我想显示用户选择的类别 然后想显示属于该类别的主题 在那里 用户可以拥有多个类别 这没有问题 我可以在第一个 while 循环中打印所有这些类别 问题是当我尝试打印主题时 结果只显示一行 但每个类别中有更多主
  • Magento - 自定义支付模块

    这是一个非常普遍的问题 但这里是 我正在尝试在 Magento 中创建一个自定义支付模块 我创建了一个 常规 模块 可以连接到 Magento 事件 观察者模型 但是我如何告诉 Magento 将模块视为支付模块 以便它显示在管理后端和结账

随机推荐

  • 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 并将流回显给客户端 从那里 客户端可以在基本音频标签中播放它