微信小程序錄音文件格式silk遇到的問題及解決方法
不好意思,誤導大家了,這種將silk解密的方式只是在小程序測試的時候可以,上線以后這種方法是不行的,還是需要使用解密轉碼。參見:https://github.com/kn007/silk-v3-decoder
微信小程序的錄音文件就是個坑。。。
錄音文件為silk格式,說是silk其實是base64加密后的webm格式,只需將其轉為webm格式即可。
我在解決問題的過程中,學到了,遇到問題一定要抓住本質,本來我以為silk是啥格式,這不懵逼了,趕緊找audio是否能播放silk,不能播放就去找網(wǎng)上的轉換代碼,完全沒考慮看看錄音文件里面是什么內(nèi)容,折騰了一頓以后回到問題的本質,silk文件里的內(nèi)容是base64加密后的webm格式。這樣進行base64解密就可以了。
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import com.qcloud.Utilities.Base64;
public class Base64Webm {
public static void readTxtFile(String filePath) {
try {
String encoding = "utf-8";
File file = new File(filePath);
if (file.isFile() && file.exists()) { // 判斷文件是否存在
InputStreamReader read = new InputStreamReader(new FileInputStream(file), encoding);// 考慮到編碼格式
BufferedReader bufferedReader = new BufferedReader(read);
StringBuilder lineTxt = new StringBuilder();
String line = null;
while ((line = bufferedReader.readLine()) != null) {
lineTxt.append(line);
}
read.close();
String olddata = lineTxt.toString();
olddata = olddata.replace("data:audio/webm;base64,", "");
System.out.println(olddata);
try {
File webmFile = new File("D:\\project\\liulei\\Doc\\互動直播室\\微課網(wǎng)頁開發(fā)\\silk2mp3\\caole.webm");
byte[] bt = Base64.decode(olddata) ;
FileOutputStream in = new FileOutputStream(webmFile);
try {
in.write(bt, 0, bt.length);
in.close();
// boolean success=true;
// System.out.println("寫入文件成功");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} else {
System.out.println("找不到指定的文件");
}
} catch (Exception e) {
System.out.println("讀取文件內(nèi)容出錯");
e.printStackTrace();
}
}
public static void main(String[] args) {
readTxtFile("D:\\project\\liulei\\Doc\\互動直播室\\微課網(wǎng)頁開發(fā)\\silk2mp3\\liulie.silk");
}
}
總結
以上所述是小編給大家介紹的微信小程序錄音文件格式silk遇到的問題及解決方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關文章
Java使用組件編寫窗口實現(xiàn)網(wǎng)絡圖片顯示
這篇文章主要為大家詳細介紹了Java使用組件編寫窗口實現(xiàn)網(wǎng)絡圖片顯示的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-02-02
Spring AbstractRoutingDatasource 動態(tài)數(shù)據(jù)源的實例講解
本文介紹如何使用 Spring AbstractRoutingDatasource 基于上下文動態(tài)切換數(shù)據(jù)源,因此我們會讓查找數(shù)據(jù)源邏輯獨立于數(shù)據(jù)訪問之外2021-07-07
九個動畫組圖輪播總結全棧數(shù)據(jù)結構數(shù)組鏈表
數(shù)據(jù)結構和算法是密不可分的,兩者往往是相輔相成的存在,所以在學習數(shù)據(jù)結構過程中,不免會遇到各種算法,數(shù)據(jù)結構常用操作一般為:增刪改查?;旧纤械臄?shù)據(jù)結構都是圍繞這幾個操作進行展開,本文用九張動圖來闡述先進后出的數(shù)據(jù)結構2021-08-08
文件上傳SpringBoot后端MultipartFile參數(shù)報空問題的解決辦法
這篇文章主要介紹了文件上傳SpringBoot后端MultipartFile參數(shù)報空問題的解決辦法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-11-11
Springboot?jpa使用sum()函數(shù)返回結果如何被接收
這篇文章主要介紹了Springboot?jpa使用sum()函數(shù)返回結果如何接收,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-02-02

