1

以下の作業が完了したら、

WAV ファイルを取得 => OK

private function renderWav(src, convertToMp3 = false) {
    WaveFile.writeBytesToWavFile(myWavFile, myWavData, 44100, 2, 16)       
}

MP3 に変換 => OK

private function makeIntoMp3(wav) {
    mp3Encoder = new ShineMP3Encoder(wav);
    mp3Encoder.start();
}

MP3 ファイルをクライアントに保存 => OK

private function onWavClick(e:MouseEvent) {
   new FileReference().save(mp3Encoder.mp3Data, "MyAudio.mp3");
}

上記では、クライアント側でMP3ファイルを取得できますが、私の問題ではサーバー側(PHP)に保存されます

サーバー側に保存 => 失敗

public function makeMP3File() {
   var urlVariables:URLVariables = new URLVariables;
   urlVariables.mp3Data = mp3Encoder.mp3Data;           
   var req:URLRequest = new URLRequest('upload.php');
   req.data = urlVariables;
   req.method = URLRequestMethod.POST;
   var loader:URLLoader = new URLLoader();
   loader.load(req);
}

私のPHPコード

function strean2audio($audioStream, $filename)
{
   $file = fopen($filename . '.mp3', "wb");
   fwrite($file, $audioStream);
   fclose($file);
}

私は ActionScript 初心者で、どの部分がエラーなのかわかりません。ご協力ありがとうございます。

4

1 に答える 1

0

私は自分の問題を解決する方法を見つけます (参考までに)

// FLASH MP3 ファイルをサーバーに送信

public function makeMP3File() {
  var sba:ByteArray = mp3Encoder.mp3Data;    **//to ByteArray**
  var req:URLRequest = new URLRequest('upload.php');
  req.contentType = 'application/octet-stream';
  req.method = URLRequestMethod.POST;
  req.data = sba;           
  var loader:URLLoader = new URLLoader(req);
}

// PHP サーバー側

function strean2audio($name, $spec, $userId=0) {
    $audio_content = file_get_contents("php://input");  **//get RAW POST**
    $file = fopen($audio_file_name . '.mp3', "wb");
    fwrite($file, $audio_content);
    fclose($file);
}

結論

レコーダー.MP3 -> ByteArray -> URLRequest -> URLLoader -> PHP -> ByteArray -> MP3

参照リンク :ボイスレコーダー + サーバーアップロード

于 2013-09-01T15:33:18.503 に答える