录音文件上传且amr格式转mp3格式
1.錄音文件
前臺測試代碼:
<form id="upload" enctype="multipart/form-data" method="post"><input type="file" name="file" id="pic"/><input type="button" value="提交" onclick="uploadPic();"/><span class="showUrl"></span><img src="" class="showPic" alt=""></form> function uploadPic() {var form = document.getElementById('upload'),formData = new FormData(form);$.ajax({url:"http://localhost:8080/api/uploadVoiceFile",type:"post",data:formData,processData:false,contentType:false,success:function(res){if(res){alert(res+"上傳成功!");}console.log(res);$("#pic").val("");$(".showUrl").html(res);$(".showPic").attr("src",res);},error:function(err){alert("網絡連接失敗,稍后重試",err);}})}后臺接收文件代碼:
發現問題1:
SpringBoot下測試時,發現的該問題,即在解析請求時List list = upload.parseRequest(request);得到的list size=0,也就是根本沒有得到文件數據。我在網上搜索該問題的解決方法,大致有以下兩種:
(1)原因在于Spring的配置文件中已經配置了MultipartResolver,導致文件上傳請求已經被預處理過了,所以此處解析文件列表為空,對應的做法是刪除該段配置。
(2)認為是structs的過濾器導致請求已被預處理,所以也要修改對應過濾器的配置。
然而,在SpringBoot下,上述兩種解決方法不可能做到,因為SpringBoot的相關配置都是自己完成的,根本沒有顯示的配置文件。況且以上兩種解決方法,修改配置文件可能影響整個工程的其他部分,所以得另尋方案。
我通過斷點調試該Controller代碼,發現傳入的參數HttpServletRequest實例已經為StandardMultipartHttpServletRequest 對象了,且其結構中包含整個form表單的所有字段信息,我就想,區別于網上已有的兩種解決方案,總是想避免這種預處理,何不就利用這種預處理,來簡化自己的代碼結構呢?于是就有了下面的解決代碼。其方法很簡單,就是對傳入的request做強制轉型,從而可以根據StandardMultipartHttpServletRequest 實例方法得到相關form表單數據 。
?發現問題2:
項目需要將 amr 格式的文件轉成 mp3格式,網絡上提供的思路大多是使用jave-x-x.jar。
這個包確實有用,因為開發時是在windows環境中,測試轉換雖然報了異常:
但也確實轉換成功了,可以播放。
可是一旦部署到Linux環境當中,不是轉換失敗,就是轉換的文件為大小 0 k。
?
public static void changeToMp3(String sourceDir,String targetDir) throws InputFormatException {File source = new File(sourceDir); // 源文件File target = new File(targetDir); // 目標文件AudioAttributes audio = new AudioAttributes();audio.setCodec("libmp3lame");audio.setBitRate(new Integer(128000));audio.setChannels(new Integer(2));audio.setSamplingRate(new Integer(44100));EncodingAttributes attrs = new EncodingAttributes();attrs.setFormat("mp3");attrs.setAudioAttributes(audio);attrs.setDuration(30.0f);attrs.setOffset(0f);Encoder encoder = new Encoder();try {encoder.encode(source, target, attrs);} catch (IllegalArgumentException | EncoderException e) {e.printStackTrace();}}?
?
?
?
?
?
總結
以上是生活随笔為你收集整理的录音文件上传且amr格式转mp3格式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 无线“蹭网卡”热卖 任意密码5分钟破解
- 下一篇: 计算机辅助语言学,计算机辅助语言教学的历