录音文件上传且amr格式转mp3格式
1.錄音文件
前臺(tái)測(cè)試代碼:
<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("網(wǎng)絡(luò)連接失敗,稍后重試",err);}})}后臺(tái)接收文件代碼:
發(fā)現(xiàn)問(wèn)題1:
SpringBoot下測(cè)試時(shí),發(fā)現(xiàn)的該問(wèn)題,即在解析請(qǐng)求時(shí)List list = upload.parseRequest(request);得到的list size=0,也就是根本沒(méi)有得到文件數(shù)據(jù)。我在網(wǎng)上搜索該問(wèn)題的解決方法,大致有以下兩種:
(1)原因在于Spring的配置文件中已經(jīng)配置了MultipartResolver,導(dǎo)致文件上傳請(qǐng)求已經(jīng)被預(yù)處理過(guò)了,所以此處解析文件列表為空,對(duì)應(yīng)的做法是刪除該段配置。
(2)認(rèn)為是structs的過(guò)濾器導(dǎo)致請(qǐng)求已被預(yù)處理,所以也要修改對(duì)應(yīng)過(guò)濾器的配置。
然而,在SpringBoot下,上述兩種解決方法不可能做到,因?yàn)镾pringBoot的相關(guān)配置都是自己完成的,根本沒(méi)有顯示的配置文件。況且以上兩種解決方法,修改配置文件可能影響整個(gè)工程的其他部分,所以得另尋方案。
我通過(guò)斷點(diǎn)調(diào)試該Controller代碼,發(fā)現(xiàn)傳入的參數(shù)HttpServletRequest實(shí)例已經(jīng)為StandardMultipartHttpServletRequest 對(duì)象了,且其結(jié)構(gòu)中包含整個(gè)form表單的所有字段信息,我就想,區(qū)別于網(wǎng)上已有的兩種解決方案,總是想避免這種預(yù)處理,何不就利用這種預(yù)處理,來(lái)簡(jiǎn)化自己的代碼結(jié)構(gòu)呢?于是就有了下面的解決代碼。其方法很簡(jiǎn)單,就是對(duì)傳入的request做強(qiáng)制轉(zhuǎn)型,從而可以根據(jù)StandardMultipartHttpServletRequest 實(shí)例方法得到相關(guān)form表單數(shù)據(jù) 。
?發(fā)現(xiàn)問(wèn)題2:
項(xiàng)目需要將 amr 格式的文件轉(zhuǎn)成 mp3格式,網(wǎng)絡(luò)上提供的思路大多是使用jave-x-x.jar。
這個(gè)包確實(shí)有用,因?yàn)殚_(kāi)發(fā)時(shí)是在windows環(huán)境中,測(cè)試轉(zhuǎn)換雖然報(bào)了異常:
但也確實(shí)轉(zhuǎn)換成功了,可以播放。
可是一旦部署到Linux環(huán)境當(dāng)中,不是轉(zhuǎn)換失敗,就是轉(zhuǎn)換的文件為大小 0 k。
?
public static void changeToMp3(String sourceDir,String targetDir) throws InputFormatException {File source = new File(sourceDir); // 源文件File target = new File(targetDir); // 目標(biāo)文件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();}}?
?
?
?
?
?
總結(jié)
以上是生活随笔為你收集整理的录音文件上传且amr格式转mp3格式的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 无线“蹭网卡”热卖 任意密码5分钟破解
- 下一篇: 计算机辅助语言学,计算机辅助语言教学的历