2016-11-28 13 views
0

녹음기를 사용하여 오디오를 녹음하고 있습니다. 그것은 오디오를 생성합니다. 루비 레일을 사용하고 있습니다. 나는 그것을 구한다. 그것은 내 서버에 파일을 올바르게 보냅니다. 테스트를하고 오디오가 동일한 지 확인합니다. 재생되지 않으며 재생 시간이 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 또는 메모장에 레일이 저장된 파일과 생성 된 파일이 있으면 차이점을 볼 수 있습니다.

params[:mp3data]

또한 레일 서버가 들어오는 PARAMS을 나열해야, 개발 모드에서 nil

수 있습니다.

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