1. 程式人生 > >java amr格式轉mp3格式(完美解決Linux下轉換0K問題)

java amr格式轉mp3格式(完美解決Linux下轉換0K問題)

因專案需求,需要將 amr 格式的檔案轉成 mp3格式。
網路上提供的思路大多是使用jave-x-x.jar。
這個包確實有用,因為開發時是在windows環境中,測試轉換雖然報了異常:

1
it.sauronsoftware.jave.EncoderException:   Duration: N/A, bitrate: N/A

但也確實轉換成功了,可以播放。
可是一旦部署到Linux環境當中,不是轉換失敗,就是轉換的檔案為大小 0 k。百思不得其解。

原因

經過一些資料和原始碼跟蹤,終於找到了原因。
jave的能轉換的原理其實就是呼叫外部的二進位制可執行檔案 ffmpeg,開啟它的jar包就可以發現,它裡面內建了:

jave原jar包截圖jave原jar包截圖

所以實際上,jave就是封裝了一層對外部ffmpeg的呼叫。
而windows上能轉換是因為:ffmpeg.exe 這個程式沒問題。
而Linux上轉換失敗也是因為 ffmpeg 這個可能版本太老或依賴庫缺失。
起初我以為是呼叫外部的ffmpeg,所以重新安裝編譯了Linux的ffmpeg,然並卵。
所以只能再想其他解決方案。

解決方法;

1:在java專案中新增jar包http://download.csdn.net/download/z313731418/9336665地址

下載下載

然後選擇一個32位還是64位:

下載下載

下載之後解壓,選擇其中的ffmpeg,替換掉。

ffmpeg替換之後

2、java 程式碼

public static void changeToMp3(String sourcePath, String targetPath) {
		File source = new File(sourcePath);
		File target = new File(targetPath);
		AudioAttributes audio = new AudioAttributes();
		Encoder encoder = new Encoder();
		audio.setCodec("libmp3lame");
		EncodingAttributes attrs = new EncodingAttributes();
		attrs.setFormat("mp3");
		attrs.setAudioAttributes(audio);
		try {
			encoder.encode(source, target, attrs);
		} catch (IllegalArgumentException e) {
			e.printStackTrace();
		} catch (InputFormatException e) {
			e.printStackTrace();
		} catch (EncoderException e) {
			e.printStackTrace();
		}
	}

3.如果打印出了錯誤

基本上算是成功了。可以去目錄下檢視是否有檔案。

其他!失敗看這裡!

如果沒成功,或者轉換失敗,看這裡
在操作的時候,為了驗證伺服器支援這種方式,你可以將下載回來的ffmpeg拷貝到你的伺服器上,手動進行轉換一次,如果失敗,可以留言哦。
可以操作如下:

  1. 解壓檔案(可以自己下載,也可以下載博主在最後提供的現成的jar包,直接解壓jar也,開啟.it/sauronsoftware/jave 目錄,也可以看到這個ffmpeg )
  2. 進入目錄,看到ffmpeg檔案後,將其拷貝到Linux環境下。
  3. 準備一個amr檔案,將兩個檔案都拷貝到同一個目錄下,進行測試。如果準備好了,如圖:
    arm和ffmpegarm和ffmpeg
  4. 接著先給ffmpeg加個執行許可權

    1
    
    chmod +x ffmpeg
    
  5. 接著呼叫 ffmpeg 執行轉換下

    1
    
    ./ffmpeg  -i test.amr  test.mp3
    

然後你會看到一堆的日誌,並且可能還有提示,“test.amr: Input/output error”,但不要擔心,先不管,你檢視下這個目錄下是否多了一個test.mp3 檔案。如果有了,恭喜你,轉換成功了,嘗試播放下MP3

你可能得到的日誌如下:
日誌和執行日誌和執行.

重點:

用命令可以轉換成功,把jar包導進去用程式就不行。

可能是快取,你到Tomcat下有個temp目錄,進入jave 目錄,挺多層的,進去看看有沒一個ffmpeg檔案,刪除掉。


相關推薦

java amr格式mp3格式(完美解決Linux轉換0K問題)

因專案需求,需要將 amr 格式的檔案轉成 mp3格式。 網路上提供的思路大多是使用jave-x-x.jar。 這個包確實有用,因為開發時是在windows環境中,測試轉換雖然報了異常: 1 it.sauronsoftware.jave.EncoderExcepti

java後臺amr格式mp3格式方法

方法一: 使用ffmpeg 軟體。public void changeAmrToMp3(String sourcePath, String targetPath) throws IllegalArgumentException, EncoderException {     

錄音檔案上傳且amr格式mp3格式

1.錄音檔案 前臺測試程式碼: <form id="upload" enctype="multipart/form-data" method="post"> <input type="file" name="file" id="pic"/>

ncm格式mp3格式

1.用瀏覽器播放你需要轉換格式的那首網易雲歌曲;2.播放結束後在internet選項——常規——瀏覽歷史記錄——設定——Internet臨時檔案——檢視檔案,開啟後按時間排列,最近的mp3或者wma等歌曲格式的檔案就是你剛才聽過的歌的快取(類似”mms://m10.music.126.net.....”這類開

[轉載[完美解決 Linux Sublime Text 中文輸入

.html void region sometimes pkg time pre install amp 原文地址: http://www.cnblogs.com/wangkongming/p/4302642.html 轉來備忘。 系統CentOS7.3 fcitx 中文輸

完美解決 Linux Sublime Text 中文輸入

參考Sublime Text官方論壇一位中國哥們的 回覆,通過以下方法完美解決Sublime Text 2中文輸入的問題。這幾天討論區老是有人提問,就寫個教程吧。 系統:Linux Mint 14 Nadia輸入法:Fcitx 4.2.6.1 PPA。 1. 儲存下面的程式碼為sublime_imfi

完美解決 Linux Sublime Text 3中文輸入

sublime很好用,但是ubuntu下不能輸入中文,這是一個很大的問題。 網上的方法各種樣。但是在終端執中開啟 sublime 事先設定 LD_PRELOAD 。 在這裡我提供一個個人認為最簡單的方法。 系統:ubuntu 14.04 輸入法:fcit

java利用ffmpeg將amr、cafmp3格式

    最近再做一個專案,要將手機APP上的檔案上傳到伺服器上來,包括圖片、聲音、視訊檔案。起初只有Android版,大家知道,Android的錄音格式amr,在電腦上播放不出來,必須轉碼。因為之前只有Android版的,所以就用jave給方便的解決了。但是後來又增加了iP

php自定義函數: amrmp3格式

com pre php mp3 ams highlight cti ror cal <?php function amr2mp3($file){ if (file_exists($file . ‘.mp3‘) == true) { retur

mp3格式wav格式 附完整C++算法實現代碼

結果 lsa orm 掃碼 sampler mp3文件 采樣率 mp3 完整 近期偶然間看到一個開源項目minimp3 Minimalistic MP3 decoder single header library 項目地址: https://github.com/lieff

視訊mp3格式轉換器怎麼使用

  視訊轉換器怎麼把視訊轉換成mp3格式?有時候需要將一些視訊中的音訊提取出來,但是沒有專業的工具,很不好辦,小編通過朋友的介紹,知道有一款軟體可以高效轉換音視訊檔案的格式,這款軟體體積不大,功能卻很多,可以幫我們輕鬆解決不少音視訊格式方面的問題,下面我們就一起來看看快速把視訊轉換成mp3的方法~

m4rmp3格式用什麼音訊轉換器好

經常玩弄鈴聲製作的童鞋也許比較清楚m4r是什麼格式,m4r是iphone鈴聲的一種音訊格式,在國內的一些iPhone鈴聲資源站或者是蘋果iTunes上都是有得下載,不過對於安卓或者非ios系統的手機來說,它們並不支援m4r格式音訊,這個時候就需要將下載到的m4r

oggmp3格式轉換器哪個好用

工具 album sel play 合並 ase 尺寸 ref lec 大家有沒有遇到這種情況,在網上下載了一首音樂,但是在手機的MP3裏卻不能播放,因為這個音樂是ogg格式的,雖然ogg格式音頻優點眾多,支持多聲道,音質好,但是沒辦法,MP3不支持播放,還是要轉換格式,怎

IOS 實現使用lame庫 錄音MP3格式 邊錄邊功能

在iOS中使用AVAudioRecorder無法錄製MP3格式的音訊檔案,雖然你可能會看到過這樣一個列舉: CF_ENUM(AudioFormatID) { kAudioFormatLinearPCM = 'lpcm',

Java 字符串(String)格式json格式

scrip ice service() trac bject nco ref 輸出 auto json是前後端傳輸數據的一種文本格式,json其實就是字符串,因為前後端傳輸數據時,只能傳輸字符串,我們又想傳一些對象或者列表信息,這都是很常見的應用場景。 所以,我們需要在j

老司機圖文教程教你如何免費下載騰訊視頻的視頻mp4(直接下載到,不用qlv格式mp4格式,親測)

bsp 答案 微信 mp4 文件合並 免費下載 說明 格式轉換 com 關於如何下載到騰訊視頻的mp4這個問題,大家想必經過多翻搜索,都未必找到滿意的答案吧。 下載微信公眾號文章中引用的騰訊視頻的方法也是一樣適用本方法。 因為用騰訊視電腦客戶端和手機APP下載到的都是Q

(POI)Excel格式Html格式

alignment range llc dde 文件轉換 ESS inf res rto Demo結構和引用的Jar包 源代碼(TestDemo.java) POI中將Excel轉換為HTML方法僅能轉換HSSFWorkBook類型(即03版xls),故可以先將讀取的

推薦一個markdown格式html格式的開源JavaScript庫

ron 輸入框 com world 字符 scrip ogr gem load 這個markdown格式轉html格式的開源JavaScript庫在github上的地址: https://github.com/millerblack/markdown-js 從markdow

如何將FLAC格式轉為MP3格式

align 比較 分享圖片 自己 宋體 局限 多個 註冊登錄 span   FLAC是一種無損壓縮格式,也就是說音頻以FLAC編碼壓縮後不會丟失任何信息,並且將FLAC文件還原後與壓縮前的文件內容相同。由於FLAC的無損壓縮性質導致它所占儲存空間也很大,特別對於喜歡聽音樂的

VIA格式COCO格式

VIA是一款很好用的標註軟體,基於網頁,不過現在開源的大多數目標檢測器都是基於COCO訓練和測試的,我們如果想要訓練自己的資料集,要麼修改原始碼,要麼將自己的標註格式改成COCO格式,採用第一種方法很容易出錯,那麼格式轉換就是一個比較簡單的辦法,我找了好久沒有看到VIA格式轉為COCO格式的工具或者部落格,於