モジュール java.desktop
パッケージ 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を構築します。
    • フィールドの詳細

      • 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はリトル・エンディアンを示す)
    • メソッドの詳細

      • 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 bit mono big-endian」などの、形式を記述する文字列を返します。 文字列の内容はJava Soundの実装によって異なります。
        オーバーライド:
        toString 、クラス:  Object
        戻り値:
        形式パラメータを記述する文字列