2017-10-06 8 views

答えて

1

にYouTubeの歌詞のハイライトなどのように、歌詞(または何でも)は、それらが表示されるはずれる回でタグ付けされています使用しているアンドロイドプレイヤーがLRCを認識している場合、適切な時間間隔で歌詞を自動的にオーバーレイする必要があります。拡張されたタグ付けを使用すると、一度にいくつかの単語を表示することさえできます。

2

まず、あなたがプレーして、あなたはこの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(); 
     } 

として、メディアプレーヤーでその字幕ファイルを追加したいオーディオの字幕ファイルを作成する必要があります。

+0

字幕をテキストビューでどのように表示できますか? – Husnain

+0

はい、字幕をtextviewに表示するには、次のリンクをクリックしてください:https://stackoverflow.com/questions/13422673/looking-for-a-working-example-of-addtimedtextsource-for-adding-subtitle-to-a-vid – Ashish

0

アンドロイド用のサンプルコードはありませんが、私はこのような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クラス(アクティビティまたはカスタムライブラリ)を作成します。生のテキスト行の

  • のArrayList([00:12.00] Naku Pendaピヤ-Nakuタカピヤ-Mpenziwe、...)あなたのクラスは、属性が必要に解析タグの
  • のArrayListを([00.12.00]右
  • に左と歌詞ライン上の時刻形式を表示するには、[00.18.50]、...)
  • ArrayListに解析されたテキスト行(Naku Pendaピヤ-Nakuタカピヤ-Mpenziwe、...)
  • のリストビュー
  • ListViewに表示する線の数
  • リストのようなビューを保持するアイテム(ユーザーがアプリケーション内の歌詞の各行を追加または編集できるようにする場合は、Time Format TextView、Lyrics Line TexViewまたはEditText)

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です。

関連する問題