2014-09-04 88 views
0

我有MP2音頻文件和JAVA的問題。無論如何,Audio似乎是一種痛苦。我嘗試使用JavaLayer和Xuggler解碼並將MP2文件轉碼爲WAV。兩者都失敗了。這些發展似乎並不積極。雖然很多人仍在使用這些。 JMF或FMJ我還沒有嘗試過。我希望有更多的本土方法。JAVA MP2播放(原生)

我最終將JavaLayer分派給我的項目。隨着一個小的代碼更改,我設法看到它從MP2讀取所有幀。但試圖將其轉換爲WAV導致文件只能在VLC中播放,並且可以識別但扭曲。

無論如何,一個廣泛的問題,我很抱歉。我想我問的是,有沒有任何可以幫助我的JAVA + JavaLayer + MP2大師?

原始MP2:https://dl.dropboxusercontent.com/u/90134918/horng014.mp2 失敗WAV轉換:https://dl.dropboxusercontent.com/u/90134918/horng014_fail.wav

我有一個公共的GitHub賬號爲這個項目,但我還沒有張貼這斷碼還沒有。

+0

MP2不是MPEG2。 – chrylis 2014-09-04 17:22:15

回答

0

同時孤單是一個新的Java媒體框架這裏:

https://sourceforge.net/projects/doppio/

高層次的API球員和僅使用解碼器的低級別的API。

這個播放器在這裏https://sourceforge.net/projects/xamp2/基於這個媒體框架,可以播放提到的文件。此外,這些東西是開源的。

+0

很棒有一個新的舊的舊的,雖然通常的格式也是老的,但沒有工作,沒有維護,很好! – tonihele 2015-04-26 16:04:42

+0

走在前面,開始使用它。 – tonihele 2015-05-15 14:04:09

0

通過調試jlayer1.01步進後,我得出結論,只有兩種可能:

要麼jlayer頭文字錯誤進行解碼,或jlayers表和代碼是正確的,該文件的參數,從什麼標準定義偏離。我缺乏知識和時間來找出這兩者的情況。

僅僅因爲jlayer未更新幾年並不一定意味着它被遺棄;它通常對於普通MP3來說效果很好。爲什麼要在沒有任何已知錯誤的情況下進行更新?

MP2現在不是很普遍;實際上它在15年前還沒有那麼普遍,所以很可能會出現這樣的情況:還有一個未知的bug。嘗試提交錯誤報告並給它一些時間。

+0

該文件轉換爲WAV與許多轉換器沒有任何問題。所有的頭文件都很好(據我所知)。我也用HEX編輯器來檢查它。 我註釋掉從javazoom.jl.decoder.Header如下(185): '如果(stream.isSyncCurrentPosition(同步模式)) \t {' 因爲它只是似乎從它已經在標題中向前移動光標。並已正確解析它。並用此識別並解碼所有幀。感謝您的回覆,我會嘗試提交一個錯誤,儘管似乎沒有在SourceForge上的答案。 – tonihele 2014-09-05 07:57:15

+0

https://sourceforge.net/p/javalayer/bugs/13/ – tonihele 2014-09-05 09:04:50

+0

嗯,我做了別的。在標題中。calculate_framesize()我註釋了「if(h_version == MPEG2_LSF || h_version == MPEG25_LSF)framesize >> = 1;」。我懷疑解碼器本身沒問題,但頭標位的特定組合處理不當。我不會很快把這個錯誤報告寫下來;開源工作人員會這樣做,他們可能會在做出任何聲明之前首先查看問題。只有在5-10天后沒有反應,我纔會認爲該項目已經死亡。 – Durandal 2014-09-05 12:34:54

0

MP2文件是正確的,MP2現在很常見,MP2編碼器twolame是最新的增強型VBR編碼。您可以與普通玩家一起播放該文件。在JLayer中有兩個不同的錯誤:1.幀大小計算錯誤2. MP2低採樣頻率(Mpeg2-Layer2)的比特分配表是錯誤的。

+0

謝謝。我也想到了。我的解決方案是,我找到了一個更簡單的C庫,我轉換爲JAVA。它具體修復對於低採樣頻率的事情來說,要比搞清楚如何修復JLayer更容易(即使我知道問題出在哪裏)......圖書館:http://keyj.emphy.de/kjmp2/ – tonihele 2015-01-07 06:36:43

相關問題