LoginSignup
2
1

More than 3 years have passed since last update.

javaでaudioファイルの長さを取得する方法

Last updated at Posted at 2019-05-24

audioファイルの長さを取得する方法

背景を簡単に説明

LINE Messaging APIを使って、チャネルトークという弊社ウェブ接客チャットツールとLINE公式アカウントを連動※させる際に、音声ファイルの長さ(duration)を取得するところでつまづいたので、共有。

※LINE公式アカウントでのエンドユーザーとの対話を、接客チャットプラットフォームであるチャネルトークで返信、声かけが可能になる。
サイトに設置した接客チャットからの問い合わせと、LINE公式アカウントからの問い合わせに、チャネルトークの管理者画面から対応可能

チャネルトークでアップロードされた音声ファイルをLINE公式アカウントでエンドユーザ側からも見えるように同期するのに、Messaging APIに音声ファイルを送るのだが音声ファイルの長さ(duration)も送らなくてはならない。

実装方法

ただ、この音声ファイルの長さをファイルから取得するようなAPIはない。

でも方法は簡単。自分で実装すれば良い。
音声ファイルから取得できる総フレーム数とフレームレートから計算すれば良い。

File file = new File(fileUrl);

try {
    // 音声ファイルのmetadataを取得する準備
    AudioInputStream stream = AudioSystem.getAudioInputStream(file);

    // 音声ファイルの総フレーム数
    long length = stream.getFrameLength();
    AudioFormat format = stream.getFormat();

    // frame -> 1秒あたりに処理するフレーム数
    float frame = format.getSampleRate();
    // 総フレーム数➗1秒あたりに処理するフレーム数 = 長さ 
    int duration = (int)(length/frame);

} catch (UnsupportedAudioFileException e) {
    return false;
}

色々探さないで、素直に最初からこれやればよかったかも。。。
とりあえず思ったよりも簡単でした!

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1