4

.wav次のコードを使用して、Java プロジェクトで使用しているファイルのプロパティを取得しようとしています。ただし、このコードを実行するとformat.getProperty("title")、 、format.getProperty("author")、およびformat.getProperty("duration")すべてのメソッドが null を返します。これらの詳細を別の方法で取得する必要がありますか?

AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(wavFile);
AudioFormat format = audioInputStream.getFormat();
Object[] temp = {false,
        format.getProperty("title"),
        format.getProperty("author"),
        format.getProperty("duration")};
4

1 に答える 1

1

WAV ファイルは、複数のメタデータ タイプを保持できますが、操作が困難です。使用するソフトウェアとエンコーダー ( 16/32 ビット PCM ) に応じて、ファイルの構成が異なる可能性があり、Java Sound APIはこのメタデータを読み取る際に問題に直面する可能性があります。

オーディオのメタタグ付けに焦点を当てた多くのツールとライブラリ ( Apache Tikajd3libmp3agicBeaglebuddyなど) を試しましたが、それらのほとんどは MP3 やその他のオーディオ形式では正常に動作しますが、WAV ファイルでは動作しません。

どうやら、これを処理するのに適しているのはJaudiotaggerです。シンプルで高速で、次のような方法で目標を達成できます。

AudioFile f = AudioFileIO.read(wavFile);
WavTag tag = (WavTag) f.getTag();

Object[] temp = {false,
        tag.getFirst(FieldKey.TITLE),
        tag.getFirst(FieldKey.ARTIST),
        f.getAudioHeader().getTrackLength() // In seconds
};

また、次のリンクも参照してください。

: この機能のサポートは、上記のバージョン 2.2.4 から追加されました。したがって、互換性の問題を排除するために、常に最新バージョンを優先してください。

于 2016-11-19T01:56:34.613 に答える