php 实现 录音
PHP 实现录音功能
PHP 本身是服务器端语言,无法直接操作客户端设备(如麦克风)进行录音。但可以通过结合前端技术(如 JavaScript)和后端处理来实现录音功能。以下是具体实现方法:

前端使用 JavaScript 录制音频
前端通过 MediaDevices.getUserMedia() API 访问麦克风,并使用 MediaRecorder 录制音频:

// 请求麦克风权限并开始录音
navigator.mediaDevices.getUserMedia({ audio: true })
.then(stream => {
const mediaRecorder = new MediaRecorder(stream);
const audioChunks = [];
mediaRecorder.addEventListener("dataavailable", event => {
audioChunks.push(event.data);
});
mediaRecorder.addEventListener("stop", () => {
const audioBlob = new Blob(audioChunks, { type: "audio/wav" });
uploadAudio(audioBlob); // 上传到 PHP 后端
});
mediaRecorder.start();
// 停止录音示例:setTimeout(() => mediaRecorder.stop(), 5000);
});
上传音频到 PHP 后端
通过 FormData 将音频文件上传到服务器:
function uploadAudio(audioBlob) {
const formData = new FormData();
formData.append("audio", audioBlob, "recording.wav");
fetch("upload.php", {
method: "POST",
body: formData
}).then(response => console.log("上传成功"));
}
PHP 接收并保存音频文件
在 upload.php 中处理上传的音频文件:
<?php
if (isset($_FILES['audio'])) {
$uploadDir = 'uploads/';
$filename = uniqid() . '.wav';
$destination = $uploadDir . $filename;
if (move_uploaded_file($_FILES['audio']['tmp_name'], $destination)) {
echo "文件保存成功: " . $filename;
} else {
echo "文件保存失败";
}
}
?>
完整流程说明
- 用户授权麦克风访问:前端通过浏览器 API 获取麦克风权限。
- 录制音频:使用
MediaRecorder录制音频并生成 Blob 对象。 - 上传到服务器:通过 HTTP 请求将音频发送到 PHP 后端。
- 保存文件:PHP 接收文件并存储到指定目录。
注意事项
- 浏览器兼容性:
MediaRecorder在不同浏览器中的支持程度不同,需测试目标环境。 - 文件格式:默认生成的音频格式可能为
audio/webm,需根据需求转换格式。 - 服务器配置:确保 PHP 有写入权限,且上传目录(如
uploads/)已创建。 - 安全性:对上传文件进行验证(如检查 MIME 类型),避免恶意文件上传。
扩展功能
- 音频转码:通过 PHP 的
shell_exec调用 FFmpeg 转换音频格式。 - 数据库记录:将文件名和元数据存储到数据库以便管理。
- 实时流处理:使用 WebSocket 实现实时音频流传输(需额外后端支持)。






