21.4。 スナウ — SunAUファイルの読み取りと書き込み
ソースコード: :source: `Lib / sunau.py`
sunau モジュールは、SunAUサウンドフォーマットへの便利なインターフェイスを提供します。 このモジュールは、モジュール aifc および wave とインターフェイス互換性があることに注意してください。
オーディオファイルは、ヘッダーとそれに続くデータで構成されます。 ヘッダーのフィールドは次のとおりです。
分野 | コンテンツ |
---|---|
魔法の言葉 | 4バイト.snd 。
|
ヘッダーサイズ | 情報を含むヘッダーのサイズ(バイト単位)。 |
データサイズ | データの物理サイズ(バイト単位)。 |
エンコーディング | オーディオサンプルのエンコード方法を示します。 |
サンプルレート | サンプリングレート。 |
チャンネル数 | サンプル内のチャネル数。 |
情報 | オーディオファイルの説明を示すASCII文字列(nullバイトが埋め込まれます)。 |
infoフィールドを除いて、すべてのヘッダーフィールドのサイズは4バイトです。 これらはすべて、ビッグエンディアンのバイト順序でエンコードされた32ビットの符号なし整数です。
sunau モジュールは、次の関数を定義します。
- sunau.open(file, mode)
file が文字列の場合は、その名前でファイルを開きます。それ以外の場合は、シーク可能なファイルのようなオブジェクトとして扱います。 モードは次のいずれかになります
'r'
読み取り専用モード。
'w'
書き込み専用モード。
ファイルの読み取り/書き込みは許可されないことに注意してください。
'r'
の mode はAU_read
オブジェクトを返し、'w'
または'wb'
の mode はAU_write
オブジェクト。
- sunau.openfp(file, mode)
- open()の同義語であり、下位互換性のために維持されています。
sunau モジュールは、次の例外を定義します。
- exception sunau.Error
- SunAUの仕様または実装の欠陥のために何かが不可能な場合に発生するエラー。
sunau モジュールは、次のデータ項目を定義します。
- sunau.AUDIO_FILE_MAGIC
- 有効なSunAUファイルごとに始まる整数で、ビッグエンディアン形式で保存されます。 これは、整数として解釈される文字列
.snd
です。
- sunau.AUDIO_FILE_ENCODING_MULAW_8
sunau.AUDIO_FILE_ENCODING_LINEAR_8
sunau.AUDIO_FILE_ENCODING_LINEAR_16
sunau.AUDIO_FILE_ENCODING_LINEAR_24
sunau.AUDIO_FILE_ENCODING_LINEAR_32
sunau.AUDIO_FILE_ENCODING_ALAW_8
- このモジュールでサポートされているAUヘッダーのエンコーディングフィールドの値。
- sunau.AUDIO_FILE_ENCODING_FLOAT
sunau.AUDIO_FILE_ENCODING_DOUBLE
sunau.AUDIO_FILE_ENCODING_ADPCM_G721
sunau.AUDIO_FILE_ENCODING_ADPCM_G722
sunau.AUDIO_FILE_ENCODING_ADPCM_G723_3
sunau.AUDIO_FILE_ENCODING_ADPCM_G723_5
- AUヘッダーからのエンコーディングフィールドの追加の既知の値ですが、このモジュールではサポートされていません。
21.4.1。 AU_readオブジェクト
上記の open()によって返されるAU_readオブジェクトには、次のメソッドがあります。
- AU_read.close()
- ストリームを閉じて、インスタンスを使用不可にします。 (これは削除時に自動的に呼び出されます。)
- AU_read.getnchannels()
- オーディオチャンネルの数を返します(モノラルの場合は1、ステレオの場合は2)。
- AU_read.getsampwidth()
- サンプル幅をバイト単位で返します。
- AU_read.getframerate()
- サンプリング周波数を返します。
- AU_read.getnframes()
- オーディオフレームの数を返します。
- AU_read.getcomptype()
- 圧縮タイプを返します。 サポートされている圧縮タイプは、
'ULAW'
、'ALAW'
、および'NONE'
です。
- AU_read.getcompname()
- getcomptype()の人間が読めるバージョン。 サポートされているタイプには、それぞれ
'CCITT G.711 u-law'
、'CCITT G.711 A-law'
、および'not compressed'
という名前があります。
- AU_read.getparams()
get*()
メソッドの出力と同等のタプル(nchannels, sampwidth, framerate, nframes, comptype, compname)
を返します。
- AU_read.readframes(n)
- 最大で n フレームのオーディオをバイト文字列として読み取って返します。 データは線形形式で返されます。 元のデータがu-LAW形式の場合は、変換されます。
- AU_read.rewind()
- ファイルポインタをオーディオストリームの先頭に巻き戻します。
次の2つの方法は、それらの間で互換性があり、それ以外の場合は実装に依存する「位置」という用語を定義します。
- AU_read.setpos(pos)
- ファイルポインタを指定した位置に設定します。 tell()から返された値のみを pos に使用する必要があります。
- AU_read.tell()
- 現在のファイルポインタの位置を返します。 戻り値は、ファイル内の実際の位置とは関係がないことに注意してください。
次の2つの関数は、 aifc との互換性のために定義されており、興味深いことは何もしません。
- AU_read.getmarkers()
None
を返します。
- AU_read.getmark(id)
- エラーを発生させます。
21.4.2。 AU_writeオブジェクト
上記の open()によって返されるAU_writeオブジェクトには、次のメソッドがあります。
- AU_write.setnchannels(n)
- チャンネル数を設定します。
- AU_write.setsampwidth(n)
- サンプル幅を設定します(バイト単位)。
- AU_write.setframerate(n)
- フレームレートを設定します。
- AU_write.setnframes(n)
- フレーム数を設定します。 これは、さらにフレームが書き込まれるときに、後で変更できます。
- AU_write.setcomptype(type, name)
- 圧縮の種類と説明を設定します。
'NONE'
と'ULAW'
のみが出力でサポートされます。
- AU_write.setparams(tuple)
- タプルは
(nchannels, sampwidth, framerate, nframes, comptype, compname)
であり、値はset*()
メソッドに有効である必要があります。 すべてのパラメータを設定します。
- AU_write.tell()
- AU_read.tell()メソッドと AU_read.setpos()メソッドについても同じ免責事項を使用して、ファイル内の現在の位置を返します。
- AU_write.writeframesraw(data)
- nframes を修正せずにオーディオフレームを書き込みます。
- AU_write.writeframes(data)
- オーディオフレームを書き込み、 nframes が正しいことを確認します。
- AU_write.close()
nframes が正しいことを確認し、ファイルを閉じます。
このメソッドは、削除時に呼び出されます。
writeframes()
またはwriteframesraw()
を呼び出した後にパラメータを設定することは無効であることに注意してください。