我有一个带有脚本(实际上是一个插件)的“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,但当我尝试手动播放时,媒体播放器说:
答案 0 :(得分:0)
在不知道您使用哪个插件来捕获音频的情况下,很难确定。但是我假设:
//$("<a href='"+url+"' download='MyRecording.wav'></a>")[0].click();
以前实际上工作过,这意味着你收到的任何音频都是直接声音。
Mp3是一种编码格式,因此,您的媒体播放器可能会失败,尝试解码未编码的音频。
尝试更改输出结束:
$file_location = "assets/records/recorded_audio.wav";
并查看这些文件是否会为您播放。
如果这不能解决问题,你应该输出&#34; url&#34;您作为数据发送,以查看它是否发送不需要的标记/标题。