【问题标题】:audio recording upload to server using jwagener's recorder.js and recorder.swf使用 jwagener 的 recorder.js 和 recorder.swf 将录音上传到服务器
【发布时间】:2012-09-05 16:30:36
【问题描述】:

我正在尝试在客户端录制音频并将其发送到服务器进行处理。 我已经成功地能够在客户端录制和播放音频。当我需要将信息发布到服务器时,我的问题就出现了。

我正在使用 jwageners 的 recorder.js :https://github.com/jwagener/recorder.js#readme

我在站点的主目录中有一个 crossdomain.xml 文件。内容如下

<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM
"http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
   <allow-access-from domain="*" secure="false"/>
</cross-domain-policy>

根据他的文档,发布请求如下所示:

  function upload(){
     Recorder.upload({
        method: "POST",                            
        url: "http://localhost/fagaudio/recorder/recorder_server.php",  
        audioParam: "audiofile",           
         params: {                                  
           "name": "test.wav",
         },
        success: function(responseText){           
            alert(responseText); 
        },
        error: function(){                  

        }
      });
  }

在服务器端(recorder_server.php)我正在尝试这样的事情:

print_r($_POST);
$name = $_POST['name'];
$content = file_get_contents('php://input');
$fh = fopen("audio/".$name, 'w') or die("can't open file");
fwrite($fh, $content);
fclose($fh);

print_r 语句返回以下内容:

数组 ( [名称] => test.wav [文件名] => audio.wav [上传] => 提交查询 )

似乎没有任何原始 php 发布数据,并且文件被保存为空。我在做什么明显有问题吗?我已经尝试过使用 WAMI 记录器,它工作得很好,但问题是我需要能够通过 javascript 将信息发布到服务器,而 wami 只是在每次录制后自动这样做。

提前感谢您的任何帮助或意见。此外,如果有人熟悉其他免费的 javascript/flash 记录器,请指出他们的方向。我已经通过堆栈溢出搜索了一些建议。

【问题讨论】:

    标签: php audio


    【解决方案1】:

    尝试将以下代码写入 php 文件,

        $save_folder = dirname(__FILE__) . "/audio";
    if(! file_exists($save_folder)) {
      if(! mkdir($save_folder)) {
        die("failed to create save folder $save_folder");
      }
     }
    
    $key = 'filename';
    $tmp_name = $_FILES["audiofile"]["tmp_name"];
    $upload_name = $_FILES["audiofile"]["name"];
    $type = $_FILES["audiofile"]["type"];
    $filename = "$save_folder/$upload_name";
    $saved = 0;
    if(($type == 'audio/x-wav' || $type == 'application/octet-stream') && preg_match('/^[a-zA-Z0-9_\-]+\.wav$/', $upload_name) ) {
    
      $saved = move_uploaded_file($tmp_name, $filename) ? 1 : 0;
     }
    
      print ($saved ? "Saved" : 'Not saved');
    
    exit;
    

    【讨论】:

      【解决方案2】:

      使用这个https://github.com/cykod/FlashWavRecorder

      我用过这个,效果很好。

      您可以录制、播放,也可以将录制的文件上传到服务器,这里也使用了recorder.js。

      【讨论】:

        猜你喜欢
        • 2017-11-24
        • 2020-05-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-25
        • 2023-02-25
        • 2018-04-08
        • 2017-01-15
        相关资源
        最近更新 更多