使用录音机录制 mp3 会创建一个 blob。但是当发送到服务器时,它的播放时间为 0 秒

mp3 recording using recorder creates a blob. but when sent to server, it has a playtime of 0 seconds

我正在设法使用 recorderjs 录制音频。它创建音频。我正在使用 ruby rails。我保存它。它将文件正确发送到我的服务器。当我去测试时,看看音频是否相同。它不播放,播放时间为 0 秒。

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

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

是不是我这里的写法有问题?

很可能是您遇到了编码错误,或者输入错误生成了一个空文件。例如,参数可以是二进制八位字节流而不是 base64。 或者它可能作为不同的密钥出现,在这种情况下,您将创建一个空文件。

如果您使用 mac 或 linux,请尝试对写入的文件使用 file 命令。该命令应该查看魔术字节,如果它是 MP3,您应该会看到类似的内容。

同样,如果您对 rails 保存的文件和生成的文件进行 cat、hexdump 或记事本,您应该能够看到任何差异。

params[:mp3data]也可能是nil

在开发模式下,rails 服务器应该列出传入的参数。

谢谢。它返回为零。所以它让我检查文件,看看里面是否有任何数据。所以我为它创建了一个大小和参数。我想通了,它现在正在工作! '

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