我開發的應用程序,其中有一些音頻文件的列表。當我點擊一個項目時,它會播放相應的音頻並顯示持續時間。問題是在Android 2.1設備和模擬器的持續時間是正確的,但在Android 2.2模擬器它顯示錯誤的持續時間。有沒有人有想法來解決這個問題。有沒有一種好的方法來獲得正確的聲音文件的持續時間。音頻文件位於res/raw文件夾中。有一件事iPhone的相同的聲音顯示正確的持續時間。時間錯誤在Android 2.2
0
A
回答
2
是
這可能是由於VBR文件。可變比特率提頭,這可能是使用的Android軟件來計算它的長度MP3的持續率。
我記得看過一個實用工具,可以計算出一個「正確」的有效比特率和前綴在啓動一個單獨的MP3數據幀只是爲了讓報告「正確的」(平均)比特率。
嘗試VBRFix
整個一首歌曲有需要高品質和需要低質量(即沉默)分點。 VBR(可變比特率)在文件內爲我們提供了一個可變的質量,而不是將整個文件保存在一個質量上。這使我們能夠更有效地使用文件空間。問題是,許多MP3播放程序根據他們找到的第一個比特率和文件大小來估計MP3的時間。此外,通過文件跳躍時的位置是不一樣的 - 通過VBR MP3中途可能無法通過這首歌一半。 OGG Vorbis是一種更先進的免費的音樂格式,並使用VBR默認沒有問題
這也是在倉庫的Ubuntu(Debian的可能):sudo apt-get install vbrfix
+0
謝謝你給的解決方案。我正在用foobar2000修復VBR。 – gypsicoder 2011-05-20 19:46:55
0
我可能是有點晚在回答這個問題,但無論如何,我是能夠修復使用Ringdroid類似類型的問題。這是你必須做的使用Rindroid獲得音頻持續時間從VBR文件毫秒
public class AudioUtils
{
public static long getDuration(CheapSoundFile cheapSoundFile)
{
if(cheapSoundFile == null)
return -1;
int sampleRate = cheapSoundFile.getSampleRate();
int samplesPerFrame = cheapSoundFile.getSamplesPerFrame();
int frames = cheapSoundFile.getNumFrames();
cheapSoundFile = null;
return 1000 * (frames * samplesPerFrame)/sampleRate;
}
public static long getDuration(String mediaPath)
{
if(mediaPath != null && mediaPath.length() > 0)
try
{
return getDuration(CheapSoundFile.create(mediaPath, null));
}catch (FileNotFoundException e){}
catch (IOException e){}
return -1;
}
}
希望這有助於
相關問題
- 1. Android 2.2 compileJava錯誤
- 2. Android 2.2 MediaPlayer錯誤
- 3. Symfony + Doctrine 2.2日期時間列錯誤
- 4. AdMob的Android 2.2的錯誤
- 5. 錯誤在Android Studio 2.2中使用Subversion
- 6. Android Quickblox錯誤時間戳錯誤
- 7. Android時間戳錯誤
- 8. 過Android Studio 2.2和2.3的錯誤
- 9. Android Studio 2.2數據綁定錯誤
- 10. Android版本2.2的錯誤對話框
- 11. SWT/LogCat中的錯誤?或Android 2.2 AVD
- 12. 的Android Studio 2.2中錯誤NullPointerException異常
- 13. 的Android Studio 2.2中NDK configruation錯誤
- 14. android 2.2谷歌地圖錯誤
- 15. 的Android Studio 2.2中給錯誤,同時創造新的項目
- 16. 的Android Studio 2.2中顯示錯誤:CreateProcess的錯誤= 216
- 17. 在NPObject上調用方法時出錯!在Android 2.2
- 18. 如何在Android Studio 2.2中刪除此錯誤?
- 19. Android通知中的錯誤時間戳
- 20. Android工作室gradle complie時間錯誤
- 21. Android AVD啓動時間錯誤
- 22. 獲取時間戳錯誤的firebase android
- 23. grep:破管錯誤python 2.2
- 24. GWT 2.2 RootPanel CSS錯誤
- 25. Android 2.2:在代碼
- 26. Maven android同時管理android 2.2和3.0
- 27. 時間表錯誤
- 28. 錯誤autoparsed時間
- 29. Bash時間錯誤
- 30. Android 2.1和2.2之間的SQLite差異
是否以WAV/LPCM格式的文件是什麼? – inazaruk 2011-05-20 19:30:48
所有的文件都是MP3格式 – gypsicoder 2011-05-20 19:34:58