1

以下是完成的工作

获取WAV文件=> OK

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

转换为 MP3 => 确定

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

将 MP3 文件保存到客户端 => 确定

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);
}

结论

recorder.MP3 -> ByteArray -> URLRequest -> URLLoader -> PHP -> ByteArray -> MP3

参考链接:录音机+服务器上传

于 2013-09-01T15:33:18.503 回答