python3从零学习-5.11.3、 sunau - 读写 Sun AU 文件

    技术2022-07-10  139

    源代码: Lib/sunau.py


    sunau     模拟提供了一个处理 Sun AU 声音格式的便利接口。请注意此模块与 aifc 和 wave    是兼容接口的。

    音频文件由标头和数据组成。标头的字段为:

    目录

    magic word

    四个字节 .snd

    header size

    标头的大小,包括信息,以字节为单位。

    data size

    数据的物理大小,以字节为单位。

    编码

    指示音频样本的编码方式。

    sample rate

    采样率

    # of channels

    的通道数。

    info

    提供音频文件描述的ASCII字符串(用空字节填充)。

    除了info字段之外,所有头字段的大小都是4字节。它们都是用大端字节顺序编码的32位无符号整数。

    sunau模块定义了以下功能:

    sunau.open(file, mode)

    如果file是一个字符串,按该名称打开文件,否则将其视为一个可查找的类文件对象。

    mode:

    ‘r':只读模式。

    ‘w':只写模式。

     

    注意,它不允许读/写文件。

    'r'模式返回一个AU_read对象,而'w'或'wb'模式返回一个AU_write对象。

    sunau.openfp(file, mode)

    同 open()  ,用于向后兼容。

     

    sunau模块定义了以下异常:

    exception sunau.Error

    由于Sun AU规格或实现缺陷而导致某些事情不可能完成时出现的错误。

     

    sunau模块定义了以下数据项:

    sunau.AUDIO_FILE_MAGIC

    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

    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_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”和“未压缩”。

     

    AU_read.getparams()

    返回一个 namedtuple()            (nchannels, sampwidth, framerate, nframes, comptype, compname),与 get*() 方法的输出相同。

     

    AU_read.readframes(n)

    读取和返回最多n帧的音频,作为一个字节对象。数据将以线性格式返回。如果原始数据是u-LAW格式,将进行转换。

     

    AU_read.rewind()

    重置文件指针至音频开头.

     

    以下两个方法都使用指针,具体实现由其底层决定。

    AU_read.setpos(pos)

    将文件指针设置为指定位置。pos只能使用tell()返回的值。

     

    AU_read.tell()

    返回当前文件指针位置。注意,返回值与文件中的实际位置无关。

     

    以下两个函数的定义是为了与aifc兼容,它们不做任何有趣的事情。

    AU_read.getmarkers()

    返回 None。

     

    AU_read.getmark(id)

    引发错误异常。

     

    AU_write 对象

    上面的open()返回的AU_write对象有以下方法:

    AU_write.setnchannels(n)

    设置声道数。

     

    AU_write.setsampwidth(n)

    Set the sample width (in bytes.)

     

    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()之后设置任何参数都是无效的。

    Processed: 0.010, SQL: 9