Files
hustoj/web/python-docs/library/ossaudiodev.html
2025-03-09 17:10:56 +08:00

608 lines
51 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="zh_CN">
<head>
<meta charset="utf-8" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<title>ossaudiodev --- 访问兼容OSS的音频设备 &#8212; Python 3.8.20 文档</title><meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="../_static/pydoctheme.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<script id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
<script src="../_static/jquery.js"></script>
<script src="../_static/underscore.js"></script>
<script src="../_static/doctools.js"></script>
<script src="../_static/language_data.js"></script>
<script src="../_static/translations.js"></script>
<script src="../_static/sidebar.js"></script>
<link rel="search" type="application/opensearchdescription+xml"
title="在 Python 3.8.20 文档 中搜索"
href="../_static/opensearch.xml"/>
<link rel="author" title="关于这些文档" href="../about.html" />
<link rel="index" title="索引" href="../genindex.html" />
<link rel="search" title="搜索" href="../search.html" />
<link rel="copyright" title="版权所有" href="../copyright.html" />
<link rel="next" title="国际化" href="i18n.html" />
<link rel="prev" title="sndhdr --- 推测声音文件的类型" href="sndhdr.html" />
<link rel="canonical" href="https://docs.python.org/3/library/ossaudiodev.html" />
<style>
@media only screen {
table.full-width-table {
width: 100%;
}
}
</style>
<link rel="shortcut icon" type="image/png" href="../_static/py.svg" />
<script type="text/javascript" src="../_static/copybutton.js"></script>
<script type="text/javascript" src="../_static/menu.js"></script>
</head>
<body>
<div class="mobile-nav">
<input type="checkbox" id="menuToggler" class="toggler__input" aria-controls="navigation"
aria-pressed="false" aria-expanded="false" role="button" aria-label="Menu" />
<label for="menuToggler" class="toggler__label">
<span></span>
</label>
<nav class="nav-content" role="navigation">
<a href="https://www.python.org/" class="nav-logo">
<img src="../_static/py.svg" alt="Logo"/>
</a>
<div class="version_switcher_placeholder"></div>
<form role="search" class="search" action="../search.html" method="get">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" class="search-icon">
<path fill-rule="nonzero"
d="M15.5 14h-.79l-.28-.27a6.5 6.5 0 001.48-5.34c-.47-2.78-2.79-5-5.59-5.34a6.505 6.505 0 00-7.27 7.27c.34 2.8 2.56 5.12 5.34 5.59a6.5 6.5 0 005.34-1.48l.27.28v.79l4.25 4.25c.41.41 1.08.41 1.49 0 .41-.41.41-1.08 0-1.49L15.5 14zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z" fill="#444"></path>
</svg>
<input type="text" name="q" aria-label="快速搜索"/>
<input type="submit" value="转向"/>
</form>
</nav>
<div class="menu-wrapper">
<nav class="menu" role="navigation" aria-label="main navigation">
<div class="language_switcher_placeholder"></div>
<h3><a href="../contents.html">目录</a></h3>
<ul>
<li><a class="reference internal" href="#"><code class="xref py py-mod docutils literal notranslate"><span class="pre">ossaudiodev</span></code> --- 访问兼容OSS的音频设备</a><ul>
<li><a class="reference internal" href="#audio-device-objects">音频设备对象</a></li>
<li><a class="reference internal" href="#mixer-device-objects">混音器设备对象</a></li>
</ul>
</li>
</ul>
<h4>上一个主题</h4>
<p class="topless"><a href="sndhdr.html"
title="上一章"><code class="xref py py-mod docutils literal notranslate"><span class="pre">sndhdr</span></code> --- 推测声音文件的类型</a></p>
<h4>下一个主题</h4>
<p class="topless"><a href="i18n.html"
title="下一章">国际化</a></p>
<div role="note" aria-label="source link">
<h3>本页</h3>
<ul class="this-page-menu">
<li><a href="../bugs.html">报告 Bug</a></li>
<li>
<a href="https://github.com/python/cpython/blob/3.8/Doc/library/ossaudiodev.rst"
rel="nofollow">显示源代码
</a>
</li>
</ul>
</div>
</nav>
</div>
</div>
<div id="outdated-warning" style="padding: .5em; text-align: center; background-color: #FFBABA; color: #6A0E0E;">
这个文档所针对的是一个已不再受支持的 Python 旧版本。
你应当升级版本,并阅读
<a href="/3/library/ossaudiodev.html"> Python 当前稳定版本的文档</a>.
</div>
<div class="related" role="navigation" aria-label="related navigation">
<h3>导航</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../genindex.html" title="总目录"
accesskey="I">索引</a></li>
<li class="right" >
<a href="../py-modindex.html" title="Python 模块索引"
>模块</a> |</li>
<li class="right" >
<a href="i18n.html" title="国际化"
accesskey="N">下一页</a> |</li>
<li class="right" >
<a href="sndhdr.html" title="sndhdr --- 推测声音文件的类型"
accesskey="P">上一页</a> |</li>
<li><img src="../_static/py.svg" alt="python logo" style="vertical-align: middle; margin-top: -1px"/></li>
<li><a href="https://www.python.org/">Python</a> &#187;</li>
<li class="switchers">
<div class="language_switcher_placeholder"></div>
<div class="version_switcher_placeholder"></div>
</li>
<li>
</li>
<li id="cpython-language-and-version">
<a href="../index.html">3.8.20 Documentation</a> &#187;
</li>
<li class="nav-item nav-item-1"><a href="index.html" >Python 标准库</a> &#187;</li>
<li class="nav-item nav-item-2"><a href="mm.html" accesskey="U">多媒体服务</a> &#187;</li>
<li class="right">
<div class="inline-search" role="search">
<form class="inline-search" action="../search.html" method="get">
<input placeholder="快速搜索" aria-label="快速搜索" type="text" name="q" />
<input type="submit" value="转向" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
|
</li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<section id="module-ossaudiodev">
<span id="ossaudiodev-access-to-oss-compatible-audio-devices"></span><h1><a class="reference internal" href="#module-ossaudiodev" title="ossaudiodev: Access to OSS-compatible audio devices. (Linux, FreeBSD)"><code class="xref py py-mod docutils literal notranslate"><span class="pre">ossaudiodev</span></code></a> --- 访问兼容OSS的音频设备<a class="headerlink" href="#module-ossaudiodev" title="永久链接至标题"></a></h1>
<hr class="docutils" />
<p>该模块允许您访问 OSS开放式音响系统音频接口。 OSS 可用于广泛的开源和商业 Unices并且是 Linux 和最新版本的 FreeBSD 的标准音频接口。</p>
<div class="versionchanged">
<p><span class="versionmodified changed">在 3.3 版更改: </span>此模块中过去会引发 <a class="reference internal" href="exceptions.html#IOError" title="IOError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">IOError</span></code></a> 的操作现在将引发 <a class="reference internal" href="exceptions.html#OSError" title="OSError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">OSError</span></code></a></p>
</div>
<div class="admonition seealso">
<p class="admonition-title">参见</p>
<dl class="simple">
<dt><a class="reference external" href="http://www.opensound.com/pguide/oss.pdf">开放之声系统程序员指南</a></dt><dd><p>OSS C API 的官方文档</p>
</dd>
</dl>
<p>该模块定义了大量由OSS设备驱动提供的常量 请参阅 <code class="docutils literal notranslate"><span class="pre">&lt;sys/soundcard.h&gt;</span></code> Linux 或 FreeBSD 上的列表。</p>
</div>
<p><a class="reference internal" href="#module-ossaudiodev" title="ossaudiodev: Access to OSS-compatible audio devices. (Linux, FreeBSD)"><code class="xref py py-mod docutils literal notranslate"><span class="pre">ossaudiodev</span></code></a> 定义了下列变量和函数:</p>
<dl class="exception">
<dt id="ossaudiodev.OSSAudioError">
<em class="property">exception </em><code class="sig-prename descclassname">ossaudiodev.</code><code class="sig-name descname">OSSAudioError</code><a class="headerlink" href="#ossaudiodev.OSSAudioError" title="永久链接至目标"></a></dt>
<dd><p>此异常会针对特定错误被引发。 其参数为一个描述错误信息的字符串。</p>
<p>(如果 <a class="reference internal" href="#module-ossaudiodev" title="ossaudiodev: Access to OSS-compatible audio devices. (Linux, FreeBSD)"><code class="xref py py-mod docutils literal notranslate"><span class="pre">ossaudiodev</span></code></a> 从系统调用例如 <code class="xref c c-func docutils literal notranslate"><span class="pre">open()</span></code>, <code class="xref c c-func docutils literal notranslate"><span class="pre">write()</span></code><code class="xref c c-func docutils literal notranslate"><span class="pre">ioctl()</span></code> 接收到错误,它将引发 <a class="reference internal" href="exceptions.html#OSError" title="OSError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">OSError</span></code></a>。 由 <a class="reference internal" href="#module-ossaudiodev" title="ossaudiodev: Access to OSS-compatible audio devices. (Linux, FreeBSD)"><code class="xref py py-mod docutils literal notranslate"><span class="pre">ossaudiodev</span></code></a> 直接检测到的错误将引发 <a class="reference internal" href="#ossaudiodev.OSSAudioError" title="ossaudiodev.OSSAudioError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">OSSAudioError</span></code></a>。)</p>
<p>(为了向下兼容,此异常类也可通过 <code class="docutils literal notranslate"><span class="pre">ossaudiodev.error</span></code> 访问。)</p>
</dd></dl>
<dl class="function">
<dt id="ossaudiodev.open">
<code class="sig-prename descclassname">ossaudiodev.</code><code class="sig-name descname">open</code><span class="sig-paren">(</span><em class="sig-param">mode</em><span class="sig-paren">)</span><a class="headerlink" href="#ossaudiodev.open" title="永久链接至目标"></a></dt>
<dt>
<code class="sig-prename descclassname">ossaudiodev.</code><code class="sig-name descname">open</code><span class="sig-paren">(</span><em class="sig-param">device</em>, <em class="sig-param">mode</em><span class="sig-paren">)</span></dt>
<dd><p>打开一个音频设备并返回 OSS 音频设备对象。 此对象支持许多文件类方法,例如 <code class="xref py py-meth docutils literal notranslate"><span class="pre">read()</span></code>, <code class="xref py py-meth docutils literal notranslate"><span class="pre">write()</span></code><code class="xref py py-meth docutils literal notranslate"><span class="pre">fileno()</span></code> (不过传统的 Unix 读/写语义与 OSS 音频设备的存在一些细微的差异)。 它还支持一些音频专属的方法;完整的方法列表见下文。</p>
<p><em>device</em> 是要使用的音频设备文件名。 如果未指定,则此模块会先在环境变量 <span class="target" id="index-4"></span><code class="xref std std-envvar docutils literal notranslate"><span class="pre">AUDIODEV</span></code> 中查找要使用的设备。 如果未找到,它将回退为 <code class="file docutils literal notranslate"><span class="pre">/dev/dsp</span></code></p>
<p><em>mode</em> 可以为 <code class="docutils literal notranslate"><span class="pre">'r'</span></code> 表示只读(录音)访问,<code class="docutils literal notranslate"><span class="pre">'w'</span></code> 表示只写(回放)访问以及 <code class="docutils literal notranslate"><span class="pre">'rw'</span></code> 表示同时读写。 由于许多声卡在同一时间只允许单个进程打开录音机或播放器,因此好的做法是只根据活动的需要打开设备。 并且,有些声卡是半双工的:它们可以被打开用于读取或写入,但不能同时读写。</p>
<p>请注意这里特殊的调用语法: <em>first</em> 参数是可选的,而第二个参数则是必需的。 这是出于历史原因要与 <a class="reference internal" href="#module-ossaudiodev" title="ossaudiodev: Access to OSS-compatible audio devices. (Linux, FreeBSD)"><code class="xref py py-mod docutils literal notranslate"><span class="pre">ossaudiodev</span></code></a> 所替代的 <code class="xref py py-mod docutils literal notranslate"><span class="pre">linuxaudiodev</span></code> 模块保持兼容。</p>
</dd></dl>
<dl class="function">
<dt id="ossaudiodev.openmixer">
<code class="sig-prename descclassname">ossaudiodev.</code><code class="sig-name descname">openmixer</code><span class="sig-paren">(</span><span class="optional">[</span><em class="sig-param">device</em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#ossaudiodev.openmixer" title="永久链接至目标"></a></dt>
<dd><p>打开一个混音设备并返回 OSS 混音设备对象。 <em>device</em> 是要使用的混音设备文件名。 如果未指定,则此模块会先在环境变量 <span class="target" id="index-5"></span><code class="xref std std-envvar docutils literal notranslate"><span class="pre">MIXERDEV</span></code> 中查找要使用的设备。 如果未找到,它将回退为 <code class="file docutils literal notranslate"><span class="pre">/dev/mixer</span></code></p>
</dd></dl>
<section id="audio-device-objects">
<span id="ossaudio-device-objects"></span><h2>音频设备对象<a class="headerlink" href="#audio-device-objects" title="永久链接至标题"></a></h2>
<p>在你写入或读取音频设备之前,你必须按照正确的顺序调用三个方法:</p>
<ol class="arabic simple">
<li><p><code class="xref py py-meth docutils literal notranslate"><span class="pre">setfmt()</span></code> 设置输出格式</p></li>
<li><p><code class="xref py py-meth docutils literal notranslate"><span class="pre">channels()</span></code> 设置声道数量</p></li>
<li><p><code class="xref py py-meth docutils literal notranslate"><span class="pre">speed()</span></code> 设置采样率</p></li>
</ol>
<p>或者,你也可以使用 <code class="xref py py-meth docutils literal notranslate"><span class="pre">setparameters()</span></code> 方法一次性地设置全部三个音频参数。 这更为便捷,但可能不会在所有场景下都一样灵活。</p>
<p><a class="reference internal" href="#ossaudiodev.open" title="ossaudiodev.open"><code class="xref py py-func docutils literal notranslate"><span class="pre">open()</span></code></a> 所返回的音频设备对象定义了下列方法和(只读)属性:</p>
<dl class="method">
<dt id="ossaudiodev.oss_audio_device.close">
<code class="sig-prename descclassname">oss_audio_device.</code><code class="sig-name descname">close</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#ossaudiodev.oss_audio_device.close" title="永久链接至目标"></a></dt>
<dd><p>显式地关闭音频设备。 当你完成写入或读取音频设备后,你应当显式地关闭它。 已关闭的设备不可被再次使用。</p>
</dd></dl>
<dl class="method">
<dt id="ossaudiodev.oss_audio_device.fileno">
<code class="sig-prename descclassname">oss_audio_device.</code><code class="sig-name descname">fileno</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#ossaudiodev.oss_audio_device.fileno" title="永久链接至目标"></a></dt>
<dd><p>返回与设备相关联的文件描述符。</p>
</dd></dl>
<dl class="method">
<dt id="ossaudiodev.oss_audio_device.read">
<code class="sig-prename descclassname">oss_audio_device.</code><code class="sig-name descname">read</code><span class="sig-paren">(</span><em class="sig-param">size</em><span class="sig-paren">)</span><a class="headerlink" href="#ossaudiodev.oss_audio_device.read" title="永久链接至目标"></a></dt>
<dd><p>从音频输入设备读取 <em>size</em> 个字节并返回为 Python 字节串。 与大多数 Unix 设备驱动不同,处于阻塞模式(默认)的 OSS 音频设备将阻塞 <a class="reference internal" href="#ossaudiodev.oss_audio_device.read" title="ossaudiodev.oss_audio_device.read"><code class="xref py py-func docutils literal notranslate"><span class="pre">read()</span></code></a> 直到所请求大小的数据全部可用。</p>
</dd></dl>
<dl class="method">
<dt id="ossaudiodev.oss_audio_device.write">
<code class="sig-prename descclassname">oss_audio_device.</code><code class="sig-name descname">write</code><span class="sig-paren">(</span><em class="sig-param">data</em><span class="sig-paren">)</span><a class="headerlink" href="#ossaudiodev.oss_audio_device.write" title="永久链接至目标"></a></dt>
<dd><p>将一个 <a class="reference internal" href="../glossary.html#term-bytes-like-object"><span class="xref std std-term">bytes-like object</span></a> <em>data</em> 写入音频设备并返回写入的字节数。 如果音频设备处于阻塞模式(默认),则总是会写入完整数据(这还是不同于通常的 Unix 设备语义)。 如果设备处于非阻塞模式,则可能会有部分数据未被写入 --- 参见 <a class="reference internal" href="#ossaudiodev.oss_audio_device.writeall" title="ossaudiodev.oss_audio_device.writeall"><code class="xref py py-meth docutils literal notranslate"><span class="pre">writeall()</span></code></a></p>
<div class="versionchanged">
<p><span class="versionmodified changed">在 3.5 版更改: </span>现在接受可写的 <a class="reference internal" href="../glossary.html#term-bytes-like-object"><span class="xref std std-term">字节类对象</span></a></p>
</div>
</dd></dl>
<dl class="method">
<dt id="ossaudiodev.oss_audio_device.writeall">
<code class="sig-prename descclassname">oss_audio_device.</code><code class="sig-name descname">writeall</code><span class="sig-paren">(</span><em class="sig-param">data</em><span class="sig-paren">)</span><a class="headerlink" href="#ossaudiodev.oss_audio_device.writeall" title="永久链接至目标"></a></dt>
<dd><p>将一个 <a class="reference internal" href="../glossary.html#term-bytes-like-object"><span class="xref std std-term">bytes-like object</span></a> <em>data</em> 写入音频设备:等待直到音频设备能够接收数据,将根据其所能接收的数据量尽可能多地写入,并重复操作直至 <em>data</em> 被完全写入。 如果设备处于阻塞模式(默认),则其效果与 <a class="reference internal" href="#ossaudiodev.oss_audio_device.write" title="ossaudiodev.oss_audio_device.write"><code class="xref py py-meth docutils literal notranslate"><span class="pre">write()</span></code></a> 相同;<a class="reference internal" href="#ossaudiodev.oss_audio_device.writeall" title="ossaudiodev.oss_audio_device.writeall"><code class="xref py py-meth docutils literal notranslate"><span class="pre">writeall()</span></code></a> 仅适用于非阻塞模式。 它没有返回值,因为写入的数据量总是等于所提供的数据量。</p>
<div class="versionchanged">
<p><span class="versionmodified changed">在 3.5 版更改: </span>现在接受可写的 <a class="reference internal" href="../glossary.html#term-bytes-like-object"><span class="xref std std-term">字节类对象</span></a></p>
</div>
</dd></dl>
<div class="versionchanged">
<p><span class="versionmodified changed">在 3.2 版更改: </span>音频设备对象还支持上下文管理协议,就是说它们可以在 <a class="reference internal" href="../reference/compound_stmts.html#with"><code class="xref std std-keyword docutils literal notranslate"><span class="pre">with</span></code></a> 语句中使用。</p>
</div>
<p>下列方法各自映射一个 <code class="xref c c-func docutils literal notranslate"><span class="pre">ioctl()</span></code> 系统调用。 对应关系很明显:例如,<code class="xref py py-meth docutils literal notranslate"><span class="pre">setfmt()</span></code> 对应 <code class="docutils literal notranslate"><span class="pre">SNDCTL_DSP_SETFMT</span></code> ioctl<code class="xref py py-meth docutils literal notranslate"><span class="pre">sync()</span></code> 对应 <code class="docutils literal notranslate"><span class="pre">SNDCTL_DSP_SYNC</span></code> (这在查阅 OSS 文档时很有用)。 如果下层的 <code class="xref c c-func docutils literal notranslate"><span class="pre">ioctl()</span></code> 失败,它们将引发 <a class="reference internal" href="exceptions.html#OSError" title="OSError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">OSError</span></code></a></p>
<dl class="method">
<dt id="ossaudiodev.oss_audio_device.nonblock">
<code class="sig-prename descclassname">oss_audio_device.</code><code class="sig-name descname">nonblock</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#ossaudiodev.oss_audio_device.nonblock" title="永久链接至目标"></a></dt>
<dd><p>将设备转为非阻塞模式。 一旦处于非阻塞模式,将无法将其转回阻塞模式。</p>
</dd></dl>
<dl class="method">
<dt id="ossaudiodev.oss_audio_device.getfmts">
<code class="sig-prename descclassname">oss_audio_device.</code><code class="sig-name descname">getfmts</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#ossaudiodev.oss_audio_device.getfmts" title="永久链接至目标"></a></dt>
<dd><p>返回声卡所支持的音频输出格式的位掩码。 OSS 支持的一部分格式如下:</p>
<table class="docutils align-default">
<colgroup>
<col style="width: 36%" />
<col style="width: 64%" />
</colgroup>
<thead>
<tr class="row-odd"><th class="head"><p>格式</p></th>
<th class="head"><p>描述</p></th>
</tr>
</thead>
<tbody>
<tr class="row-even"><td><p><code class="xref py py-const docutils literal notranslate"><span class="pre">AFMT_MU_LAW</span></code></p></td>
<td><p>一种对数编码格式(被 Sun <code class="docutils literal notranslate"><span class="pre">.au</span></code> 文件和 <code class="file docutils literal notranslate"><span class="pre">/dev/audio</span></code> 所使用)</p></td>
</tr>
<tr class="row-odd"><td><p><code class="xref py py-const docutils literal notranslate"><span class="pre">AFMT_A_LAW</span></code></p></td>
<td><p>一种对数编码格式</p></td>
</tr>
<tr class="row-even"><td><p><code class="xref py py-const docutils literal notranslate"><span class="pre">AFMT_IMA_ADPCM</span></code></p></td>
<td><p>一种 4:1 压缩格式,由 Interactive Multimedia Association 定义</p></td>
</tr>
<tr class="row-odd"><td><p><code class="xref py py-const docutils literal notranslate"><span class="pre">AFMT_U8</span></code></p></td>
<td><p>无符号的 8 位音频</p></td>
</tr>
<tr class="row-even"><td><p><code class="xref py py-const docutils literal notranslate"><span class="pre">AFMT_S16_LE</span></code></p></td>
<td><p>有符号的 16 位音频,采用小端字节序(如 Intel 处理器所用的)</p></td>
</tr>
<tr class="row-odd"><td><p><code class="xref py py-const docutils literal notranslate"><span class="pre">AFMT_S16_BE</span></code></p></td>
<td><p>有符号的 16 位音频,采用大端字节序(如 68k, PowerPC, Sparc 所用的)</p></td>
</tr>
<tr class="row-even"><td><p><code class="xref py py-const docutils literal notranslate"><span class="pre">AFMT_S8</span></code></p></td>
<td><p>有符号的 8 位音频</p></td>
</tr>
<tr class="row-odd"><td><p><code class="xref py py-const docutils literal notranslate"><span class="pre">AFMT_U16_LE</span></code></p></td>
<td><p>无符号的 16 位小端字节序音频</p></td>
</tr>
<tr class="row-even"><td><p><code class="xref py py-const docutils literal notranslate"><span class="pre">AFMT_U16_BE</span></code></p></td>
<td><p>无符号的 16 位大端字节序音频</p></td>
</tr>
</tbody>
</table>
<p>请参阅 OSS 文档获取音频格式的完整列表,还要注意大多数设备都只支持这些列表的一个子集。 某些较旧的设备仅支持 <code class="xref py py-const docutils literal notranslate"><span class="pre">AFMT_U8</span></code>;目前最为常用的格式是 <code class="xref py py-const docutils literal notranslate"><span class="pre">AFMT_S16_LE</span></code></p>
</dd></dl>
<dl class="method">
<dt id="ossaudiodev.oss_audio_device.setfmt">
<code class="sig-prename descclassname">oss_audio_device.</code><code class="sig-name descname">setfmt</code><span class="sig-paren">(</span><em class="sig-param">format</em><span class="sig-paren">)</span><a class="headerlink" href="#ossaudiodev.oss_audio_device.setfmt" title="永久链接至目标"></a></dt>
<dd><p>尝试将当前音频格式设为 <em>format</em> --- 请参阅 <a class="reference internal" href="#ossaudiodev.oss_audio_device.getfmts" title="ossaudiodev.oss_audio_device.getfmts"><code class="xref py py-meth docutils literal notranslate"><span class="pre">getfmts()</span></code></a> 获取格式列表。 返回为设备设置的音频格式,这可能并非所请求的格式。 也可被用来返回当前音频格式 --- 这可以通过传入特殊的 &quot;音频格式&quot; <code class="xref py py-const docutils literal notranslate"><span class="pre">AFMT_QUERY</span></code> 来实现。</p>
</dd></dl>
<dl class="method">
<dt id="ossaudiodev.oss_audio_device.channels">
<code class="sig-prename descclassname">oss_audio_device.</code><code class="sig-name descname">channels</code><span class="sig-paren">(</span><em class="sig-param">nchannels</em><span class="sig-paren">)</span><a class="headerlink" href="#ossaudiodev.oss_audio_device.channels" title="永久链接至目标"></a></dt>
<dd><p>将输出声道数设为 <em>nchannels</em>。 值为 1 表示单声道2 表示立体声。 某些设备可能拥有 2 个以上的声道,并且某些高端设备还可能不支持单声道。 返回为设备设置的声道数。</p>
</dd></dl>
<dl class="method">
<dt id="ossaudiodev.oss_audio_device.speed">
<code class="sig-prename descclassname">oss_audio_device.</code><code class="sig-name descname">speed</code><span class="sig-paren">(</span><em class="sig-param">samplerate</em><span class="sig-paren">)</span><a class="headerlink" href="#ossaudiodev.oss_audio_device.speed" title="永久链接至目标"></a></dt>
<dd><p>尝试将音频采样率设为每秒 <em>samplerate</em> 次采样。 返回实际设置的采样率。 大多数设备都不支持任意的采样率。 常见的采样率为:</p>
<table class="docutils align-default">
<colgroup>
<col style="width: 14%" />
<col style="width: 86%" />
</colgroup>
<thead>
<tr class="row-odd"><th class="head"><p>采样率</p></th>
<th class="head"><p>描述</p></th>
</tr>
</thead>
<tbody>
<tr class="row-even"><td><p>8000</p></td>
<td><p><code class="file docutils literal notranslate"><span class="pre">/dev/audio</span></code> 的默认采样率</p></td>
</tr>
<tr class="row-odd"><td><p>11025</p></td>
<td><p>语音录音</p></td>
</tr>
<tr class="row-even"><td><p>22050</p></td>
<td></td>
</tr>
<tr class="row-odd"><td><p>44100</p></td>
<td><p>CD品质的音频16位采样和2通道</p></td>
</tr>
<tr class="row-even"><td><p>96000</p></td>
<td><p>DVD品质的音频24位采样</p></td>
</tr>
</tbody>
</table>
</dd></dl>
<dl class="method">
<dt id="ossaudiodev.oss_audio_device.sync">
<code class="sig-prename descclassname">oss_audio_device.</code><code class="sig-name descname">sync</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#ossaudiodev.oss_audio_device.sync" title="永久链接至目标"></a></dt>
<dd><p>等待直到音频设备播放完其缓冲区中的所有字节。 (这会在设备被关闭时隐式地发生。) OSS 建议关闭再重新打开设备而不是使用 <a class="reference internal" href="#ossaudiodev.oss_audio_device.sync" title="ossaudiodev.oss_audio_device.sync"><code class="xref py py-meth docutils literal notranslate"><span class="pre">sync()</span></code></a></p>
</dd></dl>
<dl class="method">
<dt id="ossaudiodev.oss_audio_device.reset">
<code class="sig-prename descclassname">oss_audio_device.</code><code class="sig-name descname">reset</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#ossaudiodev.oss_audio_device.reset" title="永久链接至目标"></a></dt>
<dd><p>立即停止播放或录制并使设备返回可接受命令的状态。 OSS 文档建议在调用 <a class="reference internal" href="#ossaudiodev.oss_audio_device.reset" title="ossaudiodev.oss_audio_device.reset"><code class="xref py py-meth docutils literal notranslate"><span class="pre">reset()</span></code></a> 之后关闭并重新打开设备。</p>
</dd></dl>
<dl class="method">
<dt id="ossaudiodev.oss_audio_device.post">
<code class="sig-prename descclassname">oss_audio_device.</code><code class="sig-name descname">post</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#ossaudiodev.oss_audio_device.post" title="永久链接至目标"></a></dt>
<dd><p>告知设备在输出中可能有暂停,使得设备可以更智能地处理暂停。 你可以在播放一个定点音效之后、等待用户输入之前或执行磁盘 I/O 之前使用此方法。</p>
</dd></dl>
<p>下列便捷方法合并了多个 ioctl或是合并了一个 ioctl 与某些简单的运算。</p>
<dl class="method">
<dt id="ossaudiodev.oss_audio_device.setparameters">
<code class="sig-prename descclassname">oss_audio_device.</code><code class="sig-name descname">setparameters</code><span class="sig-paren">(</span><em class="sig-param">format</em>, <em class="sig-param">nchannels</em>, <em class="sig-param">samplerate</em><span class="optional">[</span>, <em class="sig-param">strict=False</em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#ossaudiodev.oss_audio_device.setparameters" title="永久链接至目标"></a></dt>
<dd><p>在一次方法调用中设置关键的音频采样参数 --- 采样格式、声道数和采样率。 <em>format</em>, <em>nchannels</em><em>samplerate</em> 应当与在 <a class="reference internal" href="#ossaudiodev.oss_audio_device.setfmt" title="ossaudiodev.oss_audio_device.setfmt"><code class="xref py py-meth docutils literal notranslate"><span class="pre">setfmt()</span></code></a>, <a class="reference internal" href="#ossaudiodev.oss_audio_device.channels" title="ossaudiodev.oss_audio_device.channels"><code class="xref py py-meth docutils literal notranslate"><span class="pre">channels()</span></code></a><a class="reference internal" href="#ossaudiodev.oss_audio_device.speed" title="ossaudiodev.oss_audio_device.speed"><code class="xref py py-meth docutils literal notranslate"><span class="pre">speed()</span></code></a> 方法中所指定的一致。 如果 <em>strict</em> 为真值,则 <a class="reference internal" href="#ossaudiodev.oss_audio_device.setparameters" title="ossaudiodev.oss_audio_device.setparameters"><code class="xref py py-meth docutils literal notranslate"><span class="pre">setparameters()</span></code></a> 会检查每个参数是否确实被设置为所请求的值,如果不是则会引发 <a class="reference internal" href="#ossaudiodev.OSSAudioError" title="ossaudiodev.OSSAudioError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">OSSAudioError</span></code></a>。 返回一个元组 (<em>format</em>, <em>nchannels</em>, <em>samplerate</em>) 指明由设备驱动实际设置的参数值 (即与 <a class="reference internal" href="#ossaudiodev.oss_audio_device.setfmt" title="ossaudiodev.oss_audio_device.setfmt"><code class="xref py py-meth docutils literal notranslate"><span class="pre">setfmt()</span></code></a>, <a class="reference internal" href="#ossaudiodev.oss_audio_device.channels" title="ossaudiodev.oss_audio_device.channels"><code class="xref py py-meth docutils literal notranslate"><span class="pre">channels()</span></code></a><a class="reference internal" href="#ossaudiodev.oss_audio_device.speed" title="ossaudiodev.oss_audio_device.speed"><code class="xref py py-meth docutils literal notranslate"><span class="pre">speed()</span></code></a> 的返回值相同)。</p>
<p>例如,:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="p">(</span><span class="n">fmt</span><span class="p">,</span> <span class="n">channels</span><span class="p">,</span> <span class="n">rate</span><span class="p">)</span> <span class="o">=</span> <span class="n">dsp</span><span class="o">.</span><span class="n">setparameters</span><span class="p">(</span><span class="n">fmt</span><span class="p">,</span> <span class="n">channels</span><span class="p">,</span> <span class="n">rate</span><span class="p">)</span>
</pre></div>
</div>
<p>等价于</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="n">fmt</span> <span class="o">=</span> <span class="n">dsp</span><span class="o">.</span><span class="n">setfmt</span><span class="p">(</span><span class="n">fmt</span><span class="p">)</span>
<span class="n">channels</span> <span class="o">=</span> <span class="n">dsp</span><span class="o">.</span><span class="n">channels</span><span class="p">(</span><span class="n">channels</span><span class="p">)</span>
<span class="n">rate</span> <span class="o">=</span> <span class="n">dsp</span><span class="o">.</span><span class="n">rate</span><span class="p">(</span><span class="n">rate</span><span class="p">)</span>
</pre></div>
</div>
</dd></dl>
<dl class="method">
<dt id="ossaudiodev.oss_audio_device.bufsize">
<code class="sig-prename descclassname">oss_audio_device.</code><code class="sig-name descname">bufsize</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#ossaudiodev.oss_audio_device.bufsize" title="永久链接至目标"></a></dt>
<dd><p>返回硬件缓冲区的大小,以采样数表示。</p>
</dd></dl>
<dl class="method">
<dt id="ossaudiodev.oss_audio_device.obufcount">
<code class="sig-prename descclassname">oss_audio_device.</code><code class="sig-name descname">obufcount</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#ossaudiodev.oss_audio_device.obufcount" title="永久链接至目标"></a></dt>
<dd><p>返回硬件缓冲区中待播放的采样数。</p>
</dd></dl>
<dl class="method">
<dt id="ossaudiodev.oss_audio_device.obuffree">
<code class="sig-prename descclassname">oss_audio_device.</code><code class="sig-name descname">obuffree</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#ossaudiodev.oss_audio_device.obuffree" title="永久链接至目标"></a></dt>
<dd><p>返回可以被加入硬件缓冲区队列以非阻塞模式播放的采样数。</p>
</dd></dl>
<p>音频设备对象还支持几个只读属性:</p>
<dl class="attribute">
<dt id="ossaudiodev.oss_audio_device.closed">
<code class="sig-prename descclassname">oss_audio_device.</code><code class="sig-name descname">closed</code><a class="headerlink" href="#ossaudiodev.oss_audio_device.closed" title="永久链接至目标"></a></dt>
<dd><p>指明设备是否已被关闭的布尔值。</p>
</dd></dl>
<dl class="attribute">
<dt id="ossaudiodev.oss_audio_device.name">
<code class="sig-prename descclassname">oss_audio_device.</code><code class="sig-name descname">name</code><a class="headerlink" href="#ossaudiodev.oss_audio_device.name" title="永久链接至目标"></a></dt>
<dd><p>包含设备文件名称的字符串。</p>
</dd></dl>
<dl class="attribute">
<dt id="ossaudiodev.oss_audio_device.mode">
<code class="sig-prename descclassname">oss_audio_device.</code><code class="sig-name descname">mode</code><a class="headerlink" href="#ossaudiodev.oss_audio_device.mode" title="永久链接至目标"></a></dt>
<dd><p>文件的 I/O 模式,可以为 <code class="docutils literal notranslate"><span class="pre">&quot;r&quot;</span></code>, <code class="docutils literal notranslate"><span class="pre">&quot;rw&quot;</span></code><code class="docutils literal notranslate"><span class="pre">&quot;w&quot;</span></code></p>
</dd></dl>
</section>
<section id="mixer-device-objects">
<span id="id1"></span><h2>混音器设备对象<a class="headerlink" href="#mixer-device-objects" title="永久链接至标题"></a></h2>
<p>混音器对象提供了两个文件类方法:</p>
<dl class="method">
<dt id="ossaudiodev.oss_mixer_device.close">
<code class="sig-prename descclassname">oss_mixer_device.</code><code class="sig-name descname">close</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#ossaudiodev.oss_mixer_device.close" title="永久链接至目标"></a></dt>
<dd><p>此方法会关闭打开的混音器设备文件。 在文件被关闭后任何继续使用混音器的尝试都将引发 <a class="reference internal" href="exceptions.html#OSError" title="OSError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">OSError</span></code></a></p>
</dd></dl>
<dl class="method">
<dt id="ossaudiodev.oss_mixer_device.fileno">
<code class="sig-prename descclassname">oss_mixer_device.</code><code class="sig-name descname">fileno</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#ossaudiodev.oss_mixer_device.fileno" title="永久链接至目标"></a></dt>
<dd><p>返回打开的混音器设备文件的文件句柄号。</p>
</dd></dl>
<div class="versionchanged">
<p><span class="versionmodified changed">在 3.2 版更改: </span>混音器设备还支持上下文管理协议。</p>
</div>
<p>其余方法都是混音专属的:</p>
<dl class="method">
<dt id="ossaudiodev.oss_mixer_device.controls">
<code class="sig-prename descclassname">oss_mixer_device.</code><code class="sig-name descname">controls</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#ossaudiodev.oss_mixer_device.controls" title="永久链接至目标"></a></dt>
<dd><p>此方法返回一个表示可用的混音控件的位掩码 (&quot;控件&quot; 是专用的可混合 &quot;声道&quot;,例如 <code class="xref py py-const docutils literal notranslate"><span class="pre">SOUND_MIXER_PCM</span></code><code class="xref py py-const docutils literal notranslate"><span class="pre">SOUND_MIXER_SYNTH</span></code>)。 该掩码会指定所有可用混音控件的一个子集 --- 它们是在模块层级上定义的 <code class="xref py py-const docutils literal notranslate"><span class="pre">SOUND_MIXER_*</span></code> 常量。 举例来说,要确定当前混音器对象是否支持 PCM 混音器,就使用以下 Python 代码:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="n">mixer</span><span class="o">=</span><span class="n">ossaudiodev</span><span class="o">.</span><span class="n">openmixer</span><span class="p">()</span>
<span class="k">if</span> <span class="n">mixer</span><span class="o">.</span><span class="n">controls</span><span class="p">()</span> <span class="o">&amp;</span> <span class="p">(</span><span class="mi">1</span> <span class="o">&lt;&lt;</span> <span class="n">ossaudiodev</span><span class="o">.</span><span class="n">SOUND_MIXER_PCM</span><span class="p">):</span>
<span class="c1"># PCM is supported</span>
<span class="o">...</span> <span class="n">code</span> <span class="o">...</span>
</pre></div>
</div>
<p>对于大多数目的来说,<code class="xref py py-const docutils literal notranslate"><span class="pre">SOUND_MIXER_VOLUME</span></code> (主音量) 和 <code class="xref py py-const docutils literal notranslate"><span class="pre">SOUND_MIXER_PCM</span></code> 控件应该足够了 --- 但使用混音器的代码应当在选择混音器控件时保持灵活。 例如在 Gravis Ultrasound 上,<code class="xref py py-const docutils literal notranslate"><span class="pre">SOUND_MIXER_VOLUME</span></code> 是不存在的。</p>
</dd></dl>
<dl class="method">
<dt id="ossaudiodev.oss_mixer_device.stereocontrols">
<code class="sig-prename descclassname">oss_mixer_device.</code><code class="sig-name descname">stereocontrols</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#ossaudiodev.oss_mixer_device.stereocontrols" title="永久链接至目标"></a></dt>
<dd><p>返回一个表示立体声混音控件的位掩码。 如果设置了比特位,则对应的控件就是立体声的;如果未设置,则控件为单声道或者不被混音器所支持(请配合 <a class="reference internal" href="#ossaudiodev.oss_mixer_device.controls" title="ossaudiodev.oss_mixer_device.controls"><code class="xref py py-meth docutils literal notranslate"><span class="pre">controls()</span></code></a> 使用以确定是哪种情况)。</p>
<p>请查看 <a class="reference internal" href="#ossaudiodev.oss_mixer_device.controls" title="ossaudiodev.oss_mixer_device.controls"><code class="xref py py-meth docutils literal notranslate"><span class="pre">controls()</span></code></a> 函数的代码示例了解如何从位掩码获取数据。</p>
</dd></dl>
<dl class="method">
<dt id="ossaudiodev.oss_mixer_device.reccontrols">
<code class="sig-prename descclassname">oss_mixer_device.</code><code class="sig-name descname">reccontrols</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#ossaudiodev.oss_mixer_device.reccontrols" title="永久链接至目标"></a></dt>
<dd><p>返回一个指明可被用于录音的混音器控件的位掩码。 请查看 <a class="reference internal" href="#ossaudiodev.oss_mixer_device.controls" title="ossaudiodev.oss_mixer_device.controls"><code class="xref py py-meth docutils literal notranslate"><span class="pre">controls()</span></code></a> 的代码示例了解如何读取位掩码。</p>
</dd></dl>
<dl class="method">
<dt id="ossaudiodev.oss_mixer_device.get">
<code class="sig-prename descclassname">oss_mixer_device.</code><code class="sig-name descname">get</code><span class="sig-paren">(</span><em class="sig-param">control</em><span class="sig-paren">)</span><a class="headerlink" href="#ossaudiodev.oss_mixer_device.get" title="永久链接至目标"></a></dt>
<dd><p>返回给定混音控件的音量。 返回的音量是一个 2 元组 <code class="docutils literal notranslate"><span class="pre">(left_volume,right_volume)</span></code>。 音量被表示为从 0 (静音) 到 100 (最大音量) 的数字。 如果控件是单声道的,仍然会返回一个 2 元组,但两个音量必定相同。</p>
<p>如果指定了无效的控件则会引发 <a class="reference internal" href="#ossaudiodev.OSSAudioError" title="ossaudiodev.OSSAudioError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">OSSAudioError</span></code></a>,或者如果指定了不受支持的控件则会引发 <a class="reference internal" href="exceptions.html#OSError" title="OSError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">OSError</span></code></a></p>
</dd></dl>
<dl class="method">
<dt id="ossaudiodev.oss_mixer_device.set">
<code class="sig-prename descclassname">oss_mixer_device.</code><code class="sig-name descname">set</code><span class="sig-paren">(</span><em class="sig-param">control</em>, <em class="sig-param">(left</em>, <em class="sig-param">right)</em><span class="sig-paren">)</span><a class="headerlink" href="#ossaudiodev.oss_mixer_device.set" title="永久链接至目标"></a></dt>
<dd><p>将给定混音控件的音量设为 <code class="docutils literal notranslate"><span class="pre">(left,right)</span></code><code class="docutils literal notranslate"><span class="pre">left</span></code><code class="docutils literal notranslate"><span class="pre">right</span></code> 必须为整数并在 0 (静音) 至 100 (最大音量) 之间。 当执行成功的,新的音量将以 2 元组形式返回。 请注意这可能不完全等于所指定的音量,因为某些声卡的混音器有精度限制。</p>
<p>如果指定了无效的混音控件,或者指定的音量超出限制则会引发 <a class="reference internal" href="#ossaudiodev.OSSAudioError" title="ossaudiodev.OSSAudioError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">OSSAudioError</span></code></a></p>
</dd></dl>
<dl class="method">
<dt id="ossaudiodev.oss_mixer_device.get_recsrc">
<code class="sig-prename descclassname">oss_mixer_device.</code><code class="sig-name descname">get_recsrc</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#ossaudiodev.oss_mixer_device.get_recsrc" title="永久链接至目标"></a></dt>
<dd><p>此方法返回一个表示当前被用作录音源的的控件的位掩码。</p>
</dd></dl>
<dl class="method">
<dt id="ossaudiodev.oss_mixer_device.set_recsrc">
<code class="sig-prename descclassname">oss_mixer_device.</code><code class="sig-name descname">set_recsrc</code><span class="sig-paren">(</span><em class="sig-param">bitmask</em><span class="sig-paren">)</span><a class="headerlink" href="#ossaudiodev.oss_mixer_device.set_recsrc" title="永久链接至目标"></a></dt>
<dd><p>调用此函数来指定一个录音源。 如果成功则返回一个指明新录音源的位掩码;如果指定了无效的源则会引发 <a class="reference internal" href="exceptions.html#OSError" title="OSError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">OSError</span></code></a>。 如果要将当前录音源设为麦克风输入:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="n">mixer</span><span class="o">.</span><span class="n">setrecsrc</span> <span class="p">(</span><span class="mi">1</span> <span class="o">&lt;&lt;</span> <span class="n">ossaudiodev</span><span class="o">.</span><span class="n">SOUND_MIXER_MIC</span><span class="p">)</span>
</pre></div>
</div>
</dd></dl>
</section>
</section>
</div>
</div>
</div>
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper">
<h3><a href="../contents.html">目录</a></h3>
<ul>
<li><a class="reference internal" href="#"><code class="xref py py-mod docutils literal notranslate"><span class="pre">ossaudiodev</span></code> --- 访问兼容OSS的音频设备</a><ul>
<li><a class="reference internal" href="#audio-device-objects">音频设备对象</a></li>
<li><a class="reference internal" href="#mixer-device-objects">混音器设备对象</a></li>
</ul>
</li>
</ul>
<h4>上一个主题</h4>
<p class="topless"><a href="sndhdr.html"
title="上一章"><code class="xref py py-mod docutils literal notranslate"><span class="pre">sndhdr</span></code> --- 推测声音文件的类型</a></p>
<h4>下一个主题</h4>
<p class="topless"><a href="i18n.html"
title="下一章">国际化</a></p>
<div role="note" aria-label="source link">
<h3>本页</h3>
<ul class="this-page-menu">
<li><a href="../bugs.html">报告 Bug</a></li>
<li>
<a href="https://github.com/python/cpython/blob/3.8/Doc/library/ossaudiodev.rst"
rel="nofollow">显示源代码
</a>
</li>
</ul>
</div>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related" role="navigation" aria-label="related navigation">
<h3>导航</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../genindex.html" title="总目录"
>索引</a></li>
<li class="right" >
<a href="../py-modindex.html" title="Python 模块索引"
>模块</a> |</li>
<li class="right" >
<a href="i18n.html" title="国际化"
>下一页</a> |</li>
<li class="right" >
<a href="sndhdr.html" title="sndhdr --- 推测声音文件的类型"
>上一页</a> |</li>
<li><img src="../_static/py.svg" alt="python logo" style="vertical-align: middle; margin-top: -1px"/></li>
<li><a href="https://www.python.org/">Python</a> &#187;</li>
<li class="switchers">
<div class="language_switcher_placeholder"></div>
<div class="version_switcher_placeholder"></div>
</li>
<li>
</li>
<li id="cpython-language-and-version">
<a href="../index.html">3.8.20 Documentation</a> &#187;
</li>
<li class="nav-item nav-item-1"><a href="index.html" >Python 标准库</a> &#187;</li>
<li class="nav-item nav-item-2"><a href="mm.html" >多媒体服务</a> &#187;</li>
<li class="right">
<div class="inline-search" role="search">
<form class="inline-search" action="../search.html" method="get">
<input placeholder="快速搜索" aria-label="快速搜索" type="text" name="q" />
<input type="submit" value="转向" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
|
</li>
</ul>
</div>
<div class="footer">
&copy; <a href="../copyright.html">版权所有</a> 2001-2024, Python Software Foundation.
<br />
This page is licensed under the Python Software Foundation License Version 2.
<br />
Examples, recipes, and other code in the documentation are additionally licensed under the Zero Clause BSD License.
<br />
<br />
The Python Software Foundation is a non-profit corporation.
<a href="https://www.python.org/psf/donations/">Please donate.</a>
<br />
<br />
最后更新于 12月 09, 2024.
<a href="https://docs.python.org/3/bugs.html">Found a bug</a>?
<br />
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 2.4.4.
</div>
</body>
</html>