モジュール java.desktop
パッケージ javax.sound.sampled

クラスAudioFormat

java.lang.Object
javax.sound.sampled.AudioFormat

public class AudioFormat
extends Object
AudioFormatは、サウンド・ストリーム内でデータの特定の配列を指定するクラスです。 オーディオ形式で格納されている情報を参照すると、バイナリ・サウンド・データ内のビットの解釈方法がわかります。

すべてのデータ・ラインには、そのデータ・ストリームに関連したオーディオ形式があります。 ソース(再生)データ・ラインのオーディオ形式はデータ・ラインが出力用に受信するデータの種類を示します。 ターゲット(取得)データ・ラインの場合、オーディオ形式はそのラインから読み込めるデータの種類を指定します。

当然、サウンド・ファイルにもオーディオ形式があります。 AudioFileFormatクラスは、他のファイル固有の情報に加えて、AudioFormatをカプセル化します。 同様に、AudioInputStreamにもAudioFormatがあります。

AudioFormatクラスには、パルス符号変調(PCM)、mu-lawエンコーディング、a-lawエンコーディングなど、多くの一般的なサウンド・ファイル・エンコーディング手法が含まれています。 これらのエンコーディング手法は事前に定義されていますが、サービス・プロバイダは新しいエンコーディング・タイプを作成できます。 特定の形式で使用されるエンコーディングは、そのencodingフィールドで指定されます。

オーディオ形式には、エンコーディング以外にもデータの正確な配列をより詳細に指定するその他のプロパティもあります。 これらのプロパティには、チャネル数、サンプル・レート、サンプル・サイズ、バイト順序、フレーム・レート、フレーム・サイズなどがあります。 サウンドには、モノ用に1つ、ステレオ用に2つなど、異なる数のオーディオ・チャネルがある場合があります。 サンプル・レートは、サウンド・プレッシャの「スナップショット」(サンプル)を、チャネルごとに1秒当たりいくつとるかを示します。 サウンドがモノではなくステレオの場合は、実際に2つのサンプルが瞬間ごとに測定されます。この場合1つは左チャネル用で、もう1つは右チャネル用です。ただし、サンプル・レートは、1チャネル当たりの数であるため、チャネル数に関係なくレートは同じになります。 これは、サンプル・レートの標準的な使用法です。 サンプル・サイズは、各スナップショットを格納する場合に使用されるビット数を示します。8および16が通常の値です。 16ビットのサンプル(または1バイトよりも大きいサイズのサンプル)の場合、バイト順序は重要です。各サンプルのバイトは、「リトルエンディアン」形式または「ビッグエンディアン」形式のどちらかで配列されます。 PCMのようなエンコーディングの場合は、1つのフレームが指定された時点のすべてのチャネルのサンプルのセットで構成され、フレーム・サイズ(バイト数)は、常にサンプル・サイズ(バイト単位)とチャネル数の積と同じになります。 ただし、他の種類のエンコーディングの場合、フレームには、サンプル全体の圧縮データ以外に、サンプル以外の追加データが含まれることがあります。 そのようなエンコーディングでは、サンプル・レートおよびサンプル・サイズは、データをPCMに復号化してから参照するため、サンプル・レートやサンプル・サイズは、フレーム・レートやフレーム・サイズとはまったく異なるものになります。

AudioFormatオブジェクトには、一式のプロパティを組み込むことができます。 1つのプロパティは、キーと値のペアから成ります。キーはString型で、対応するプロパティ値は任意のオブジェクトです。 プロパティは、圧縮形式のビット・レートなど、追加の形式仕様を指定します。 主に、サービス・プロバイダとオーディオ形式の追加情報をやりとりするための手段として使用されます。 したがって、プロパティはmatches(AudioFormat)メソッド内では無視されます。 ただし、(AudioFormat, AudioFormat) isConversionSupportedなど、インストール済みサービス・プロバイダに依存するメソッドは、そのサービス・プロバイダ実装によっては、プロパティを考慮する場合があります。

次の表に、サービス・プロバイダが使用する(適用可能な場合)一般的なプロパティのいくつかを一覧表示します。

オーディオ形式のプロパティ
プロパティ・キー 値の型 説明
"「bitrate」" Integer 平均ビット・レート(ビット/秒)
"「vbr」" Boolean ファイルが可変ビット・レート(VBR)でエンコードされている場合はtrue
"「quality」" Integer エンコーディング/変換の品質(1から100)

サービス・プロバイダ(プラグイン)のベンダーは、サード・パーティ・プラグイン内にすでに確立されているその他のプロパティの情報を探し、同じ規則に従うことをお勧めします。

導入されたバージョン:
1.3
関連項目:
DataLine.getFormat()AudioInputStream.getFormat()AudioFileFormatFormatConversionProvider
  • ネストされたクラスのサマリー

    ネストされたクラス
    修飾子と型 クラス 説明
    static class  AudioFormat.Encoding
    Encodingクラスは、オーディオ・ストリームに使用されるデータ表現の特定の種類を指定します。
  • フィールドのサマリー

    フィールド
    修飾子と型 フィールド 説明
    protected boolean bigEndian
    オーディオ・データをビッグ・エンディアンあるいはリトル・エンディアンのどちらの順序で格納するかを示します。
    protected int channels
    この形式のオーディオ・チャネル数(モノの場合は1、ステレオの場合は2)です。
    protected AudioFormat.Encoding encoding
    この形式で使用されるオーディオ・エンコーディング手法です。
    protected float frameRate
    この形式を持つサウンドの、1秒当たりに再生または録音されたフレーム数です。
    protected int frameSize
    この形式を持つサウンドの各フレームのバイト数です。
    protected float sampleRate
    この形式を持つサウンドの、1秒当たりに再生または録音されたサンプル数です。
    protected int sampleSizeInBits
    この形式を持つサウンドの各サンプルのビット数です。
  • コンストラクタのサマリー

    コンストラクタ
    コンストラクタ 説明
    AudioFormat​(float sampleRate, int sampleSizeInBits, int channels, boolean signed, boolean bigEndian)
    リニアPCMエンコーディングおよび指定されたパラメータを持つAudioFormatを構築します。
    AudioFormat​(AudioFormat.Encoding encoding, float sampleRate, int sampleSizeInBits, int channels, int frameSize, float frameRate, boolean bigEndian)
    パラメータを指定してAudioFormatを構築します。
    AudioFormat​(AudioFormat.Encoding encoding, float sampleRate, int sampleSizeInBits, int channels, int frameSize, float frameRate, boolean bigEndian, Map<String,​Object> properties)
    パラメータを指定してAudioFormatを構築します。
  • メソッドのサマリー

    修飾子と型 メソッド 説明
    int getChannels()
    チャネル数を取得します。
    AudioFormat.Encoding getEncoding()
    この形式のサウンドのエンコーディング・タイプを取得します。
    float getFrameRate()
    フレーム・レートを1秒当たりのフレーム数で取得します。
    int getFrameSize()
    フレーム・サイズをバイト数で取得します。
    Object getProperty​(String key)
    キーによって指定されたプロパティ値を取得します。
    float getSampleRate()
    サンプル・レートを取得します。
    int getSampleSizeInBits()
    サンプルのサイズを取得します。
    boolean isBigEndian()
    オーディオ・データをビッグ・エンディアンあるいはリトル・エンディアンのどちらのバイト順序で格納するかを指定します。
    boolean matches​(AudioFormat format)
    この形式が指定された形式と一致するかどうかを示します。
    Map<String,​Object> properties()
    変更不可能なプロパティのマップを取得します。
    String toString()
    オーディオ形式を説明する次のような文字列を返します: "PCM SIGNED 22050 Hz 16ビット・モノクロ・ビッグ・エンディアン"。

    クラス java.lang.Objectで宣言されたメソッド

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
  • フィールド詳細

    • encoding

      protected AudioFormat.Encoding encoding
      この形式で使用されるオーディオ・エンコーディング手法です。
    • sampleRate

      protected float sampleRate
      この形式を持つサウンドの、1秒当たりに再生または録音されたサンプル数です。
    • sampleSizeInBits

      protected int sampleSizeInBits
      この形式を持つサウンドの各サンプルのビット数です。
    • channels

      protected int channels
      この形式のオーディオ・チャネル数(モノの場合は1、ステレオの場合は2)です。
    • frameSize

      protected int frameSize
      この形式を持つサウンドの各フレームのバイト数です。
    • frameRate

      protected float frameRate
      この形式を持つサウンドの、1秒当たりに再生または録音されたフレーム数です。
    • bigEndian

      protected boolean bigEndian
      オーディオ・データをビッグ・エンディアンあるいはリトル・エンディアンのどちらの順序で格納するかを示します。
  • コンストラクタの詳細

    • AudioFormat

      public AudioFormat​(AudioFormat.Encoding encoding, float sampleRate, int sampleSizeInBits, int channels, int frameSize, float frameRate, boolean bigEndian)
      パラメータを指定してAudioFormatを構築します。 エンコーディングは、データ表現に使用される規則を指定します。 その他のパラメータについては、class descriptionの説明を参照してください。
      パラメータ:
      encoding - オーディオ・エンコーディング手法
      sampleRate - 1秒当たりのサンプル数
      sampleSizeInBits - 各サンプルのビット数
      channels - チャネル数(モノの場合は1、ステレオの場合は2など)
      frameSize - 各フレームのバイト数
      frameRate - 1秒当たりのフレーム数
      bigEndian - 単一サンプルのデータをビッグ・エンディアンのバイト順序で格納するかどうかを示す(falseはリトル・エンディアンを示す)
    • AudioFormat

      public AudioFormat​(AudioFormat.Encoding encoding, float sampleRate, int sampleSizeInBits, int channels, int frameSize, float frameRate, boolean bigEndian, Map<String,​Object> properties)
      パラメータを指定してAudioFormatを構築します。 エンコーディングは、データ表現に使用される規則を指定します。 その他のパラメータについては、class descriptionの説明を参照してください。
      パラメータ:
      encoding - オーディオ・エンコーディング手法
      sampleRate - 1秒当たりのサンプル数
      sampleSizeInBits - 各サンプルのビット数
      channels - チャネル数(モノの場合は1、ステレオの場合は2など)
      frameSize - 各フレームのバイト数
      frameRate - 1秒当たりのフレーム数
      bigEndian - 単一サンプルのデータをビッグ・エンディアンのバイト順序で格納するかどうかを示す(falseはリトル・エンディアンを示す)
      properties - 形式のプロパティを含むMap<String, Object>オブジェクト
      導入されたバージョン:
      1.5
    • AudioFormat

      public AudioFormat​(float sampleRate, int sampleSizeInBits, int channels, boolean signed, boolean bigEndian)
      リニアPCMエンコーディングおよび指定されたパラメータを持つAudioFormatを構築します。 フレーム・サイズは、各チャンネルから1つのサンプルを含むために必要なバイト数に設定され、フレーム・レートは、サンプル・レートに設定されます。
      パラメータ:
      sampleRate - 1秒当たりのサンプル数
      sampleSizeInBits - 各サンプルのビット数
      channels - チャネル数(モノの場合は1、ステレオの場合は2など)
      signed - データが符号付きか符号なしかを示す
      bigEndian - 単一サンプルのデータをビッグ・エンディアンのバイト順序で格納するかどうかを示す(falseはリトル・エンディアンを示す)
  • メソッドの詳細

    • getEncoding

      public AudioFormat.Encoding getEncoding()
      この形式のサウンドのエンコーディング・タイプを取得します。
      戻り値:
      エンコーディング・タイプ
      関連項目:
      AudioFormat.Encoding.PCM_SIGNED, AudioFormat.Encoding.PCM_UNSIGNED, AudioFormat.Encoding.ULAW, AudioFormat.Encoding.ALAW
    • getSampleRate

      public float getSampleRate()
      サンプル・レートを取得します。 圧縮形式では、戻り値は圧縮されていないオーディオ・データのサンプル・レートです。 このAudioFormatが問合せ(e.g. AudioSystem.isConversionSupported)またはcapabilities (e.g. DataLine.Info.getFormats)に使用される場合、AudioSystem.NOT_SPECIFIEDのサンプル・レートは任意のサンプル・レートが許容可能であることを意味します。 このオーディオ形式のサンプル・レートが未定義のときもAudioSystem.NOT_SPECIFIEDが返されます。
      戻り値:
      1秒当たりのサンプル数、またはAudioSystem.NOT_SPECIFIED
      関連項目:
      getFrameRate(), AudioSystem.NOT_SPECIFIED
    • getSampleSizeInBits

      public int getSampleSizeInBits()
      サンプルのサイズを取得します。 圧縮形式では、戻り値は圧縮されていないオーディオ・データのサンプル・サイズです。 このAudioFormatが問合せ(e.g. AudioSystem.isConversionSupported)またはcapabilities (e.g. DataLine.Info.getFormats)に使用される場合、AudioSystem.NOT_SPECIFIEDのサンプル・サイズは、任意のサンプル・サイズが許容可能であることを意味します。 このオーディオ形式のサンプル・サイズが未定義のときもAudioSystem.NOT_SPECIFIEDが返されます。
      戻り値:
      各サンプルのビット数またはAudioSystem.NOT_SPECIFIED
      関連項目:
      getFrameSize(), AudioSystem.NOT_SPECIFIED
    • getChannels

      public int getChannels()
      チャネル数を取得します。 このAudioFormatが問合せ(e.g. AudioSystem.isConversionSupported)またはcapabilities (e.g. DataLine.Info.getFormats)に使用される場合、AudioSystem.NOT_SPECIFIEDの戻り値は、(positive)個のチャネルの数が許容可能であることを意味します。
      戻り値:
      チャネル数(モノの場合は1、ステレオの場合は2など)、またはAudioSystem.NOT_SPECIFIED
      関連項目:
      AudioSystem.NOT_SPECIFIED
    • getFrameSize

      public int getFrameSize()
      フレーム・サイズをバイト数で取得します。 このAudioFormatが問合せ(e.g. AudioSystem.isConversionSupported)またはcapabilities (e.g. DataLine.Info.getFormats)に使用される場合、AudioSystem.NOT_SPECIFIEDのフレーム・サイズは任意のフレーム・サイズが許容可能であることを意味します。 このオーディオ形式のフレーム・サイズが未定義のときもAudioSystem.NOT_SPECIFIEDが返されます。
      戻り値:
      1フレーム当たりのバイト数、またはAudioSystem.NOT_SPECIFIED
      関連項目:
      getSampleSizeInBits(), AudioSystem.NOT_SPECIFIED
    • getFrameRate

      public float getFrameRate()
      フレーム・レートを1秒当たりのフレーム数で取得します。 このAudioFormatが問合せ(e.g. AudioSystem.isConversionSupported)またはcapabilities (e.g. DataLine.Info.getFormats)に使用される場合、AudioSystem.NOT_SPECIFIEDのフレーム・レートは任意のフレーム・レートが許容可能であることを意味します。 このオーディオ形式のフレーム・レートが未定義のときもAudioSystem.NOT_SPECIFIEDが返されます。
      戻り値:
      1秒当たりのフレーム数、またはAudioSystem.NOT_SPECIFIED
      関連項目:
      getSampleRate(), AudioSystem.NOT_SPECIFIED
    • isBigEndian

      public boolean isBigEndian()
      オーディオ・データをビッグ・エンディアンあるいはリトル・エンディアンのどちらのバイト順序で格納するかを指定します。 サンプル・サイズが1バイト以下の場合、戻り値は不適切な値になります。
      戻り値:
      データがビッグ・エンディアンのバイト順序で格納される場合はtrue、リトル・エンディアンのバイト順序の場合はfalse
    • properties

      public Map<String,​Object> properties()
      変更不可能なプロパティのマップを取得します。 プロパティの概念の詳細は、class descriptionの説明を参照してください。
      戻り値:
      すべてのプロパティを格納するMap<String, Object>オブジェクト。 プロパティが1つも認識されない場合は、空のマップが返される。
      導入されたバージョン:
      1.5
      関連項目:
      getProperty(String)
    • getProperty

      public Object getProperty​(String key)
      キーによって指定されたプロパティ値を取得します。 プロパティの概念の詳細は、class descriptionの説明を参照してください。

      指定したプロパティが特定のファイル形式で定義されていない場合、このメソッドはnullを返します。

      パラメータ:
      key - 取得したいプロパティのキー
      戻り値:
      指定されたキーを持つプロパティの値、またはプロパティが存在しない場合はnull
      導入されたバージョン:
      1.5
      関連項目:
      properties()
    • matches

      public boolean matches​(AudioFormat format)
      この形式が指定された形式と一致するかどうかを示します。 形式が一致するためには、2つの形式のエンコーディングが同一で、チャネル数、サンプル・レート、サンプル・サイズ、フレーム・レート、およびフレーム・サイズの各値が一致している必要があります。 これらが等しいか、指定された形式にプロパティ値AudioSystem.NOT_SPECIFIEDがある場合は、プロパティの値は一致しています。 バイト順序(ビッグ・エンディアンまたはリトル・エンディアン)は、サンプル・サイズが1バイトより大きい場合に同じである必要があります。
      パラメータ:
      format - 一致しているか判別する形式
      戻り値:
      指定された形式がこの形式に一致する場合はtrue、そうでない場合はfalse
    • toString

      public String toString()
      オーディオ形式を説明する次のような文字列を返します: "PCM SIGNED 22050 Hz 16ビット・モノクロ・ビッグ・エンディアン"。 文字列の内容はJava Soundの実装によって異なります。
      オーバーライド:
      toString 、クラス:  Object
      戻り値:
      オーディオ形式の文字列表現