技術系備忘録

プログラミング、人工知能、議論などの技術系の設定・使い方などの方法の置き場です.いつも助けてもらっているので誰かの助けになれば

Java で mp3 を再生するとき再生位置を指定する

ちょっとした質問があったので挙げておきます.

mp3のデータを特定の場所から再生したい場合.

 

前回の記事で再生方法には「Clip」,「Souce Data Line」の2種類があると書きました.

再生位置を指定したいとき,「Clip」の場合は簡単に実装できます.(参照:Oracle)

void setFramePosition(int frames) 
          メディアの位置をサンプルフレーム数で設定します。
void setLoopPoints(int start, int end) 
          ループ内で再生される最初および最後のサンプルフレームを設定します。
void setMicrosecondPosition(long microseconds) 
          メディア位置をマイクロ秒単位で設定します。

このあたりを使えば実装できるでしょう.

Clip の細かい扱いについては 人工知能に関する断想録  様 が非常に参考になります.

 

では,Souce Data Line の場合はというとこちらは少々厄介です.

そもそも Souce Data Line  とはパイプラインのようなもので,出力用バッファに音として出力したいデータを書き込んで音を出す方式です.

したがって,前回紹介したサンプルソースではオープンしたデータをそのまま出力へ書き込んでいましが,必要な部分までデータを捨ててから書き込めばよいことになります.(巻き戻す際のことを考えて配列に保存するのもよいかもしれません)