当前位置: 首页 > 面试题库 >

将Chrome中记录的WAV文件保存到服务器

殷耀
2023-03-14
问题内容

在这里和其他地方,我已经看到许多对此的部分答案,但是我非常适合作为新手程序员,并希望找到一个彻底的解决方案。我已经能够在Chrome
Canary(v。29.x)中设置笔记本电脑麦克风的录制音频,并且可以使用recorder.js相对容易地设置录制.wav文件并将其保存在本地,例如:

http://webaudiodemos.appspot.com/AudioRecorder/index.html

但是我需要能够将文件保存到我正在运行的Linux服务器上。这是将Blob记录的数据实际发送到服务器并将其保存为.wav文件的形式,这引起了我的注意。正如我所了解的那样,我不具备有关如何将blob保存到URL以及如何处理Linux上的二进制文件的必备PHP和/或AJAX知识,这些二进制文件确实使保存.wav文件充满了挑战。我非常欢迎任何正确方向的指点。


问题答案:

客户端JavaScript函数上传WAV Blob:

function upload(blob) {
  var xhr=new XMLHttpRequest();
  xhr.onload=function(e) {
      if(this.readyState === 4) {
          console.log("Server returned: ",e.target.responseText);
      }
  };
  var fd=new FormData();
  fd.append("that_random_filename.wav",blob);
  xhr.open("POST","<url>",true);
  xhr.send(fd);
}

PHP文件upload_wav.php

<?php
// get the temporary name that PHP gave to the uploaded file
$tmp_filename=$_FILES["that_random_filename.wav"]["tmp_name"];
// rename the temporary file (because PHP deletes the file as soon as it's done with it)
rename($tmp_filename,"/tmp/uploaded_audio.wav");
?>

之后,您可以播放文件/tmp/uploaded_audio.wav

但要记住!/tmp/uploaded_audio.wav是由用户创建的www- data,(默认情况下为PHP)用户不可读。要自动添加适当的权限,请添加以下行

chmod("/tmp/uploaded_audio.wav",0755);

到PHP的末尾(在PHP end标签之前?>)。

希望这可以帮助。



 类似资料:
  • 问题内容: 在过去的几天里,尝试使其正常工作时遇到了麻烦。但是我想要的是我们有一个可以通过网络发送原始数据的应用程序。然后,我读入此二进制数据并将其保存到wav(任何音频)文件中。稍后可以查看压缩。 所以有问题的代码: 也尝试过使用上述声明,但是我得到了例外:。因此,我认为正在发生的事情是因为我的流是原始音频数据,并且没有wave报头,所以抛出异常? 该文件确实可以成功写入,但是它都是静态的,是否

  • 我正在使用Yii2和Kartik的FileInput扩展。我在保存到目录时遇到问题。我正在使用yii高级模板,并使用gii生成CRUD代码。我现在正在编辑它。 当我保存它时,它拒绝保存并显示“请上传文件”消息。 将保存的文件. doc和. pdf大部分。 如果我在模型中设置'skipOnEmpty=True',它将保存表单而不是文件。 mysql表上的数据类型设置为VARCHAR,因为我只想保存其

  • 问题内容: 我使用以下代码将文件保存在swift 3的文档目录中: 但是正如您所看到的,我不习惯获取文档目录路径,因为它仅给出URL而不是字符串。 问题: 如何从文件管理器获取字符串? 我的代码有崩溃的可能吗? 问题答案: 请反过来考虑。 建议使用此方法来处理文件路径,因为它包含用于添加和删除路径组件和扩展名的所有便捷方法,而不是Apple从中删除了这些方法。 不鼓励您连接诸如之类的路径。这很容易

  • 问题内容: 我正在使用AudioRecord在Android中记录16位PCM数据。记录数据并将其保存到文件后,我将其读回以将其另存为.wav文件。 问题是WAV文件可以被媒体播放器识别,但只能播放纯噪声。目前,我的最佳猜测是我的wav文件头不正确,但我一直无法确定问题出在哪里。(我认为这是因为我可以播放在Audacity中记录的原始PCM数据) 这是我的代码,用于读取原始PCM文件并将其另存为.

  • 18.2 rsyslog.service :记录登录文件的服务 上一小节提到说 Linux 的登录文件主要是由 rsyslog.service 在负责,那么你的 Linux 是否有启动 rsyslog 呢?而且是否有设置开机时启动呢?呵呵!检查一下先: [[email protected] ~]# ps aux | grep rsyslog USER PID %CPU %MEM VSZ

  • 我已经创建了一个chrome扩展来学习英语,它可以构建一个包含源代码/翻译等的词典。 现在,我想将这个“文件”(我将/会用字典条目构建一个“文件”)发送到Google Drive,并在我的Android应用程序中使用这个文件。 但我不想将此文件保存在我的个人驱动器帐户中,而是保存在当前用户的驱动器中,即使用chrome扩展名的用户(当然,如果该用户有驱动器帐户)。 在我找到的所有例子中,他们为“我