前のすべての回答を読み、運がありませんでした。 mp3
オーディオをテキストと同期させる必要があるアンドロイドアプリで作業しています。 mp3
が再生されると、テキストが変更され続けます。ちょうど彼らがmp3基本的にmp3オーディオをテキストと同期させるには?
https://en.wikipedia.org/wiki/LRC_(file_format)
下の歌詞を生成するために、LRCファイルを使用
前のすべての回答を読み、運がありませんでした。 mp3
オーディオをテキストと同期させる必要があるアンドロイドアプリで作業しています。 mp3
が再生されると、テキストが変更され続けます。ちょうど彼らがmp3基本的にmp3オーディオをテキストと同期させるには?
https://en.wikipedia.org/wiki/LRC_(file_format)
下の歌詞を生成するために、LRCファイルを使用
にYouTubeの歌詞のハイライトなどのように、歌詞(または何でも)は、それらが表示されるはずれる回でタグ付けされています使用しているアンドロイドプレイヤーがLRCを認識している場合、適切な時間間隔で歌詞を自動的にオーバーレイする必要があります。拡張されたタグ付けを使用すると、一度にいくつかの単語を表示することさえできます。
まず、あなたがプレーして、あなたはこのURL Create Subtitleを確認する使用することができます字幕ファイルを作成するための
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();
}
として、メディアプレーヤーでその字幕ファイルを追加したいオーディオの字幕ファイルを作成する必要があります。
アンドロイド用のサンプルコードはありませんが、私はこのようなJavascriptで作成しましたので、いくつかのステップを指摘します。このLRC Maker & Generatorをご覧ください。歌詞の同期を取り入れた「My Heart Will Go On」のサンプルが含まれています。もしそれがあなたがしたいことを達成したいなら、それは良い。
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:各行はEX、括弧内のオーディオや時間の情報を保持しています。私はシンプルなフォーマットから始めることを提案します。
2 Simple Formatを読み込み、表示して書き込むための情報とオブジェクトを処理するJavaクラス(アクティビティまたはカスタムライブラリ)を作成します。生のテキスト行の
3-エンジンをコーディングする。書式付き行([00:12.00] Naku Penda Piya-Naku Taka Piya-Mpenziwe)と各行のタイムタグ([00.12.00])を抽出するには、正規表現を使用する必要があります。あなたは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タグを解析し、行を解析し、属性タグと行に"LRC item" ListViewの情報を設定するために使用するクラス。
LRCのアイテム・クラスが持つべき属性:
は、終了タグは、開始タグと同じになります次の行のミュージックプレーヤーにイベントリスナーを追加する現在の時間を再生します。現在の時刻を取得するたびに、すべてのLRC項目を繰り返し、現在の時刻がLRC開始時刻と終了時刻の間であることを確認し、この行を強調表示するためにLine EditTextの色を変更します。
3b-次のセクションでは、同期のために、「タイムタグ」TextViewとLRC Item Layoutの「Line」EditTextの両方にイベントリスナーを追加します。ユーザーがタイムタグTextViewをクリックするたびに、LRCタイムタグの値を更新し、Time Tag TextViewの[XX:YY.ZZ]形式でその新しい時刻を書き込んでください。
ユーザーがLine EditTextまたはTextViewをクリックし、Music Playerをその現在の時刻に変更すると、次の行のタイムタグを修正するために、任意の行に戻ることができます。
4最後に、各LRC Itemクラスの新しい情報を繰り返して取り込み、各行(Naku Penda Piya-Naku Taka Piya-Mpenziwe)の隣の各タイムタグ([00:12.00])と各行の後に改行 "\ n"を追加してください。それをmusic-file.lrcに書き込むのをやめたいのか、データベースに保存するのかを決めるのはあなた次第です。
JS Fileで詳しく見ることができます。私に影響を与えたのはLusaisai Lyricer Package Live Demoです。
字幕をテキストビューでどのように表示できますか? – Husnain
はい、字幕をtextviewに表示するには、次のリンクをクリックしてください:https://stackoverflow.com/questions/13422673/looking-for-a-working-example-of-addtimedtextsource-for-adding-subtitle-to-a-vid – Ashish