2

私の問題は、ユーザーがあなたの声を録音し終えたときにフラッシュアプ​​リケーションが生成するオーディオファイル(.wav)を保存することです。

このために、次のリンクを使用します:http: //active.tutsplus.com/tutorials/actionscript/create-a-useful-audio-recorder-app-in-actionscript-3/

ただし、これはクライアントの音声のみを保存します。サーバーに保存するためにこれを変更する必要があります。

コードの一部は(MAIN.ASに)あります:

private function recordComplete(e:Event):void{
    fileReference.save(recorder.output, "recording.wav");
}

ここで、最初の引数(recorder.output)は私のファイルで、2番目の引数は私のファイルの名前です。

私はこれのためにこの方法を変更します:

private function recordComplete(e:Event):void{
  var urlReq:URLRequest = new URLRequest("extract_voice.php");
  urlReq.method = URLRequestMethod.POST;
  urlReq.contentType = "application/octet-stream";
  //var urlVars = new URLVariables();
  //urlVars.fileAudio = recorder.output;
  urlReq.data = recorder.output;
  //var loader:URLLoader = new URLLoader(urlReq);
  //loader.dataFormat = URLLoaderDataFormat.VARIABLES;
  loader.load(urlReq);
}

そして私のextract_voice.phpは次のとおりです。

$recorder = file_get_contents('php://input');
$name = basename($recorder);
$status = move_uploaded_file($recorder, 'http://localhost/recording/audiofiles/' . $name);
if($status){
  echo 'WORK';
}

ただし、録音を停止するときは、ファイルを自分のマシンに保存するためのポップアップを常に表示してください。(クライアント)しかし、サーバーにはありません。

誰でも私が何をする必要があるか私に言うことができますか?または他の解決策が存在する場合は?(RED5のようですが、これは私には機能しません)

4

1 に答える 1

0

$ recorder = file_get_contents('php:// input');

$recorder変数は、アップロードされたファイルではなく、php入力からフェッチされたバイナリデータを保持します。それ以外の

$name = basename($recorder);
$status = move_uploaded_file($recorder, 'http://localhost/recording/audiofiles/' . $name);

使用する:

$name = md5($recorder).'.wav';
$status = file_put_contents('recording/audiofiles/'.$name, $recorder);

ファイルへのパスはWebサーバーに書き込み可能である必要があり、Webアドレスではなく、ローカルパスである必要があることに注意してください。

于 2012-10-15T23:57:13.330 に答える