在PHP上将base 64转换为音频Mp3格式

时间:2015-12-08 02:55:01

标签: php jquery html5

我有一个带有脚本(实际上是一个插件)的“audio”标签,它接收并保存为base64。这样可以。

我正在尝试更改脚本以将base64发送到服务器并将其转换为mp3并在页面中显示录制的音频。

这是我到目前为止所做的。 通过ajax保存文件的脚本:

$(document).on("click", "#download:not(.disabled)", function(){

    Fr.voice.export(function(url){
      //$("<a href='"+url+"' download='MyRecording.wav'></a>")[0].click();
      var src = url;
      $.ajax({
            url: $("#base_url").val() + "ajax/saveRecordedVoice",
            type: "POST",
            data: {"record_src": src},
            success: function(result){
                alert(result);
            }

      });
    }, "base64");
    restore();
  });

转换和保存文件的PHP脚本:

public function saveRecordedVoice()
    {

      $audio = $_POST['record_src'];
      $decoded = base64_decode($audio);
      $file_location = "assets/records/recorded_audio.mp3";

      $success = file_put_contents($file_location, $decoded);

      if($success){
         echo "File Saved";
      }else{
        echo "Uh-uh!";
      }

    }

该文件已在我的服务器中成功保存为.mp3,但当我尝试手动播放时,媒体播放器说:

enter image description here

1 个答案:

答案 0 :(得分:0)

在不知道您使用哪个插件来捕获音频的情况下,很难确定。但是我假设:

//$("<a href='"+url+"' download='MyRecording.wav'></a>")[0].click();

以前实际上工作过,这意味着你收到的任何音频都是直接声音。

Mp3是一种编码格式,因此,您的媒体播放器可能会失败,尝试解码未编码的音频。

尝试更改输出结束:

$file_location = "assets/records/recorded_audio.wav";

并查看这些文件是否会为您播放。

如果这不能解决问题,你应该输出&#34; url&#34;您作为数据发送,以查看它是否发送不需要的标记/标题。