首页 > 解决方案 > 如何从 php 应用程序播放星号的录音电话?

问题描述

我的公司有一个 Issable(基于 Asterisk 的 VoIP 解决方案)。我正在用 PHP 开发一个应用程序,其中一部分我需要播放录制的通话。该应用程序位于与 Issabel 不同的服务器中。我已经可以访问声音文件路径,例如:

/var/spool/asterisk/monitor/2018/10/20/rg-600-2122238507-20181020-223323-1540062203.100880.wav

当我想通过在此路径的开头添加 issabel 服务器的 IP 地址来使用 HTML 的音频标签播放此文件时,没有任何反应,甚至 Isaabel 也会阻止我的 IP 地址,因为服务器受密码保护。任何从我的 PHP 应用程序播放位于此路径中的文件的解决方案都将不胜感激。

标签: phphtmlasterisk

解决方案


正如 FélixGagnon-Grenier 提到的,解决这个问题的方法是通过将音频流式传输到应用程序来解决。我在包含以下代码的服务器中创建了 stream.php:

 <?php
    $filePath = $_GET['file'];
    $fileName = basename($filePath);
    $fp=fopen($filePath, "rb");
    header("Content-type: application/octet-stream");
    header('Content-disposition: attachment; filename=$fileName');
    header("Content-transfer-encoding: binary");
    header("Content-length: ".filesize($filePath)."    ");
    fpassthru($fp);
    fclose($fp);

在我位于另一台服务器中的应用程序中,我使用 HTML5 音频标签来调用文件并使用 GET 方法发送音频文件的路径:

<audio controls>
<source src="https://<SERVER_IP>/stream.php?file='.$callRecordPath.'" type="audio/wav">
Your browser does not support the audio element.
</audio> 

它对我有用!谢谢


推荐阅读