2016-11-28 1 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

Возможно, у вас есть ошибка кодирования, или опечатка, создающая пустой файл. Параметр может быть двоичным октетом потока вместо base64, например. Или он может появляться как другой ключ, и в этом случае вы делаете пустой файл.

Если вы находитесь на mac или linux, попробуйте использовать команду file в записанном файле. Команда должна смотреть на магический байт, и если это MP3, вы должны увидеть что-то в этих строках.

Аналогичным образом, если вы, кошка, шестнадцатеричный блок или блокнот, сохранили файл, который был сохранен, и сгенерированный, вы сможете увидеть любые различия.

params[:mp3data] также может быть nil

в режиме разработки, сервер рельсы должны перечислить входящие Params.

0

спасибо. он возвращался как ноль. поэтому он заставил меня проверить файл и если в нем были какие-то данные. поэтому я создал для него размер вместе с параметрами. Я понял это, и теперь он работает! '

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

Смежные вопросы