閱讀所有以前的答案,並沒有運氣。 在我需要使用文本同步mp3
音頻的Android應用中工作。隨着mp3
播放,它不斷改變文字。就像YouTube上的歌詞亮點等如何將mp3音頻與文本同步?
回答
他們使用LRC文件生成的mp3下歌詞
https://en.wikipedia.org/wiki/LRC_(file_format)
從本質上講,(或其他)標記有時間的歌詞,他們應該出現,如果您使用的android播放器支持LRC,應該按照正確的時間間隔自動疊加歌詞,甚至可以使用擴展標籤一次顯示幾行字詞。
首先你需要創建一個你要玩,然後在你的媒體播放器添加字幕文件作爲
String mimeType = getMimeType("file://mnt/sdcard/BarbieGirl.srt");
// mp.selectTrack(index);
try {
mp.addTimedTextSource(path, mimeType);
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
創建字幕文件,你可以使用檢查此網址 Create Subtitle音頻的字幕文件。
我沒有任何Android的代碼示例,但我做了這樣的Javascript,所以我要指出你的一些步驟。看看這個LRC Maker & Generator,它包含了一個樣本「我的心將繼續」與歌詞同步。如果這是你想達到那麼好。
1- Think LRC,這是一個文本格式來處理音頻文件的同步。每一行保持着信息的括號內的音頻或時間,例如:
[ar:Chubby Checker oppure Beatles, The]
[al:Hits Of The 60's - Vol. 2 – Oldies]
[ti:Let's Twist Again]
[au:Written by Kal Mann/Dave Appell, 1961]
[length: 2:23]
[00:12.00]Naku Penda Piya-Naku Taka Piya-Mpenziwe
[00:15.30]Some more lyrics ...
檢查Wikipedia LRC Format,有簡單的格式(行由行)和高級格式(字的字)。我建議從簡單格式開始。 2-創建Java類(活動或您的自定義庫)以處理信息和對象讀取,顯示和寫入簡單格式。你的類應該具有的屬性:
- ArrayList的原始文本行([00:12.00] Naku彭達皮雅-Naku塔卡皮雅-Mpenziwe,...)
- 的ArrayList解析標籤([00.12.00] [00.18.50],...)
- ArrayList的解析文本行(Naku彭達皮雅-Naku塔卡皮雅-Mpenziwe,...)
- 的ListView對左,歌詞線右側 顯示時間格式
- 顯示在您的ListView中的行數
- 列表項保存Views (時間格式TextView,歌詞行TexView或EditText,如果您允許用戶添加或編輯應用程序中的每一行歌詞)
3-代碼引擎。您需要使用正則表達式來提取每行([00.12.00])中的格式化行([00:12.00] Naku Penda Piya-Naku Taka Piya-Mpenziwe)和時間標籤。您可以使用它們從JavaScript代碼示例:
var tagRegex = /\[([a-z]+):(.*)\].*/;
var lrcAllRegex = /(\[[0-9.:\[\]]*\])+(.*)/;
var timeRegex = /\[([0-9]+):([0-9.]+)\]/;
var rawLrcArray = rawLrc.split(/[\r\n]/);
tagRegex是用於選擇音樂(標題,藝術家,流派等信息)
lrcAllRegex用於選擇具有LRC格式的行。
timeRegex是用於與LRC格式
rwaLrcArray如果用於分離整個文本到線的陣列中選擇一個整行時間格式。在Java中這一點不難。
3a-因此,使用基本過程在Android中通過ArrayAdapter在ListView中添加多個項目,閱讀Text,將它分成多行數組,解析Time Tags,解析Lines並將它們放入屬性標記和行中「LRC項目」類,您將用於在ListView中填充信息。
LRC的物品類別應具備的屬性:
- 時間啓動變量
- 時間結束標記
- 串線
對於每一行,結束標籤將是一樣的啓動變量下一行。將事件監聽器添加到音樂播放器播放當前時間。每次獲得當前時間時,迭代所有LRC項目,檢查id當前時間介於LRC開始時間和結束時間之間,然後更改Line EditText的顏色以突出顯示此行。
3b-下一步您最想要的部分,用於同步,將事件偵聽器添加到LRC項目佈局的「時間標籤」TextView和「線路」EditText中。每次用戶點擊時間標籤TextView時,都要更新LRC時間標籤值並在時間標籤TextView中以[XX:YY.ZZ]格式寫入新時間。
當用戶點擊一行EditText或TextView,然後將音樂播放器更改爲當前時間,這將允許用戶返回任何行以更正下一行的時間標記。最後,完成後,迭代並獲取每個LRC Item類的新信息,並將每個Line(Naku Penda Piya-Naku Taka Piya-Mpenziwe)旁邊的每個Time Tag([00:12.00])和在每行後添加新行「\ n」。您可以決定是否將它寫入music-file.lrc或將其保存到數據庫中。
您可以在JS File上查看更多信息。感謝Lusaisai Lyricer Package Live Demo,這激勵了我。
- 1. 如何將音頻與文本同步?
- 2. 將文本與音頻文件同步
- 3. 如何在XNA/XACT中將文本與音頻/聲音同步?
- 4. 同步文本和音頻
- 5. 如何將MIDI文件與音頻文件同步
- 6. 如何將視頻序列與音頻同步
- 7. 如何將音頻和圖像同步
- 8. 同步音頻(MediaPlayer)與Animation.setStartOffset
- 9. 運行音頻的文本同步
- 10. 將音頻與音頻隊列服務同步的建議?
- 11. 如何同步SVG動畫文件與音頻文件?
- 12. 如何將arrayBuffer轉換爲mp3音頻?
- 13. 同步音頻和文字
- 14. 音頻視頻同步與ffmpeg
- 15. 將WMA音頻文件轉換爲MP3音頻文件
- 16. HTML5音頻播放本地mp3文件
- 17. 將音頻文件轉換爲mp3
- 18. 將spx音頻文件轉換爲mp3
- 19. 音視頻同步
- 20. 音頻文件的每個幀的音頻頻率,如.mp3 .wav
- 21. portaudio視頻/音頻同步
- 22. AVCaptureMovieFileOutput音頻/視頻同步
- 23. 同步並將HTML文本高亮顯示爲音頻
- 24. 如何將任何音頻文件轉換爲MP3在軌?
- 25. 如何在Ubuntu 11.04上使用ffmpeg將文本文件轉換爲音頻(mp3)?
- 26. 如何在Android中同步音頻?
- 27. 同步OpenGL與RtAudio(或端口音頻)
- 28. 如何將base64字符串轉換爲音頻mp3文件?
- 29. 將錄製的音頻與現有的mp3文件合併android
- 30. 如何選擇ffmpeg視頻mp3音頻版本號?
如何顯示textview上的字幕? – Husnain
是的,你可以在textview上顯示字幕請點擊此鏈接:https://stackoverflow.com/questions/13422673/looking-for-a-working-example-of-addtimedtextsource-for-adding-subtitle-to-a-vid – Ashish