2016-11-28 83 views
0

我正在使用recorderjs管理录制音频。它创建音频。我正在使用红宝石轨道。我保存它。它将文件正确地发送到我的服务器。当我去测试,看看音频是否相同。它不播放,播放时间为0秒。使用录音机的MP3录音创建一个blob。但发送到服务器时,它的播放时间为0秒

我想录制2-5秒长的音频文件。然后将该文件保存在服务器上,并将其链接到一个单词。

File.open('public/mp3s/' + filename, 'wb') do |f| 
    f.write(Base64.decode64(params[:mp3data])) 
end 

我的写法在这里有什么问题吗?

回答

0

这很可能是因为编码错误或产生空文件的错字。例如,param可以是一个二进制八位字节流,而不是base64。 或者它可能会作为一个不同的关键,​​在这种情况下,你会创建一个空的文件。

如果您使用的是mac或linux,请尝试在写入的文件上使用file命令。该命令应该查看魔术字节,如果它是MP3,则应该沿着这些线看到一些东西。同样,如果你使用cat,hexdump或notepad rails保存的文件,并且生成的文件应该能够看到任何差异。

params[:mp3data]也可能是nil

发展方式

,铁轨服务器应列出传入PARAMS。

0

谢谢。它回来为零。所以它让我检查文件以及它是否有任何数据。所以我为它创建了一个尺寸和params。我想通了,它现在正在工作! “

metadata_size = "data:audio/mp3;base64,".length data = params[:mp3data][metadata_size, params[:mp3data].length] File.open('public/mp3s/' + filename, 'wb') do |f| f.write(Base64.decode64(data)) end 

@EnabrenTane