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 とはパイプラインのようなもので,出力用バッファに音として出力したいデータを書き込んで音を出す方式です.
したがって,前回紹介したサンプルソースではオープンしたデータをそのまま出力へ書き込んでいましが,必要な部分までデータを捨ててから書き込めばよいことになります.(巻き戻す際のことを考えて配列に保存するのもよいかもしれません)