Files
godot-docs-l10n/classes/zh_Hant/class_audioeffectcapture.rst

192 lines
8.3 KiB
ReStructuredText
Raw Permalink 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.

:github_url: hide
.. _class_AudioEffectCapture:
AudioEffectCapture
==================
**繼承:** :ref:`AudioEffect<class_AudioEffect>` **<** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
即時擷取音訊匯流排的音訊。
.. rst-class:: classref-introduction-group
說明
----
AudioEffectCapture 會將附加匯流排的所有音訊影格複製到其內部環形緩衝區。
程式可透過 :ref:`get_buffer()<class_AudioEffectCapture_method_get_buffer>` 從該緩衝區取出影格並自行處理,例如擷取 :ref:`AudioStreamMicrophone<class_AudioStreamMicrophone>` 資料、實作自訂效果或透過網路傳輸。從麥克風擷取時,樣本格式為雙聲道 32 位元浮點 PCM。
:ref:`AudioEffectRecord<class_AudioEffectRecord>` 不同,本效果僅回傳原始樣本,不會封裝成 :ref:`AudioStream<class_AudioStream>`\ 。
.. rst-class:: classref-introduction-group
教學
----
- :doc:`音訊匯流排 <../tutorials/audio/audio_buses>`
.. rst-class:: classref-reftable-group
屬性
----
.. table::
:widths: auto
+---------------------------+-----------------------------------------------------------------------+---------+
| :ref:`float<class_float>` | :ref:`buffer_length<class_AudioEffectCapture_property_buffer_length>` | ``0.1`` |
+---------------------------+-----------------------------------------------------------------------+---------+
.. rst-class:: classref-reftable-group
方法
----
.. table::
:widths: auto
+-----------------------------------------------------+---------------------------------------------------------------------------------------------------------------------+
| :ref:`bool<class_bool>` | :ref:`can_get_buffer<class_AudioEffectCapture_method_can_get_buffer>`\ (\ frames\: :ref:`int<class_int>`\ ) |const| |
+-----------------------------------------------------+---------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`clear_buffer<class_AudioEffectCapture_method_clear_buffer>`\ (\ ) |
+-----------------------------------------------------+---------------------------------------------------------------------------------------------------------------------+
| :ref:`PackedVector2Array<class_PackedVector2Array>` | :ref:`get_buffer<class_AudioEffectCapture_method_get_buffer>`\ (\ frames\: :ref:`int<class_int>`\ ) |
+-----------------------------------------------------+---------------------------------------------------------------------------------------------------------------------+
| :ref:`int<class_int>` | :ref:`get_buffer_length_frames<class_AudioEffectCapture_method_get_buffer_length_frames>`\ (\ ) |const| |
+-----------------------------------------------------+---------------------------------------------------------------------------------------------------------------------+
| :ref:`int<class_int>` | :ref:`get_discarded_frames<class_AudioEffectCapture_method_get_discarded_frames>`\ (\ ) |const| |
+-----------------------------------------------------+---------------------------------------------------------------------------------------------------------------------+
| :ref:`int<class_int>` | :ref:`get_frames_available<class_AudioEffectCapture_method_get_frames_available>`\ (\ ) |const| |
+-----------------------------------------------------+---------------------------------------------------------------------------------------------------------------------+
| :ref:`int<class_int>` | :ref:`get_pushed_frames<class_AudioEffectCapture_method_get_pushed_frames>`\ (\ ) |const| |
+-----------------------------------------------------+---------------------------------------------------------------------------------------------------------------------+
.. rst-class:: classref-section-separator
----
.. rst-class:: classref-descriptions-group
屬性說明
--------
.. _class_AudioEffectCapture_property_buffer_length:
.. rst-class:: classref-property
:ref:`float<class_float>` **buffer_length** = ``0.1`` :ref:`🔗<class_AudioEffectCapture_property_buffer_length>`
.. rst-class:: classref-property-setget
- |void| **set_buffer_length**\ (\ value\: :ref:`float<class_float>`\ )
- :ref:`float<class_float>` **get_buffer_length**\ (\ )
內部環形緩衝區長度(秒)。若已初始化,重新設定將無效。
.. rst-class:: classref-section-separator
----
.. rst-class:: classref-descriptions-group
方法說明
--------
.. _class_AudioEffectCapture_method_can_get_buffer:
.. rst-class:: classref-method
:ref:`bool<class_bool>` **can_get_buffer**\ (\ frames\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_AudioEffectCapture_method_can_get_buffer>`
若內部環形緩衝區中至少有 ``frames`` 個影格可讀,則回傳 ``true``\ 。
.. rst-class:: classref-item-separator
----
.. _class_AudioEffectCapture_method_clear_buffer:
.. rst-class:: classref-method
|void| **clear_buffer**\ (\ ) :ref:`🔗<class_AudioEffectCapture_method_clear_buffer>`
清空內部環形緩衝區。
\ **注意:** 擷取過程中呼叫此方法可能導致樣本遺失,播放時會出現爆音。
.. rst-class:: classref-item-separator
----
.. _class_AudioEffectCapture_method_get_buffer:
.. rst-class:: classref-method
:ref:`PackedVector2Array<class_PackedVector2Array>` **get_buffer**\ (\ frames\: :ref:`int<class_int>`\ ) :ref:`🔗<class_AudioEffectCapture_method_get_buffer>`
自環形緩衝區取出接下來的 ``frames`` 個音訊樣本。
若資料足夠,回傳含有精確 ``frames`` 個樣本的 :ref:`PackedVector2Array<class_PackedVector2Array>`\ ;否則回傳空陣列。
樣本為範圍 ``-1``\ \ ``1`` 的有號浮點 PCM若欲轉為 8 或 16 位整數,需自行縮放(例如 ``v = 0x7fff * samples[0].x``\ )。
.. rst-class:: classref-item-separator
----
.. _class_AudioEffectCapture_method_get_buffer_length_frames:
.. rst-class:: classref-method
:ref:`int<class_int>` **get_buffer_length_frames**\ (\ ) |const| :ref:`🔗<class_AudioEffectCapture_method_get_buffer_length_frames>`
回傳內部環形緩衝區的總大小(影格數)。
.. rst-class:: classref-item-separator
----
.. _class_AudioEffectCapture_method_get_discarded_frames:
.. rst-class:: classref-method
:ref:`int<class_int>` **get_discarded_frames**\ (\ ) |const| :ref:`🔗<class_AudioEffectCapture_method_get_discarded_frames>`
回傳因緩衝區已滿而被丟棄的影格數。
.. rst-class:: classref-item-separator
----
.. _class_AudioEffectCapture_method_get_frames_available:
.. rst-class:: classref-method
:ref:`int<class_int>` **get_frames_available**\ (\ ) |const| :ref:`🔗<class_AudioEffectCapture_method_get_frames_available>`
回傳可透過 :ref:`get_buffer()<class_AudioEffectCapture_method_get_buffer>` 讀取的影格數。
.. rst-class:: classref-item-separator
----
.. _class_AudioEffectCapture_method_get_pushed_frames:
.. rst-class:: classref-method
:ref:`int<class_int>` **get_pushed_frames**\ (\ ) |const| :ref:`🔗<class_AudioEffectCapture_method_get_pushed_frames>`
回傳自音訊匯流排寫入的影格總數。
.. |virtual| replace:: :abbr:`virtual (本方法通常需要使用者覆寫才能生效。)`
.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
.. |const| replace:: :abbr:`const (本方法沒有副作用。不會修改該實例的任何成員變數。)`
.. |vararg| replace:: :abbr:`vararg (本方法除了這裡描述的參數外,還可以接受任意數量的參數。)`
.. |constructor| replace:: :abbr:`constructor (本方法用於建構一個型別。)`
.. |static| replace:: :abbr:`static (本方法無需實例即可呼叫,因此可以直接使用類別名稱呼叫。)`
.. |operator| replace:: :abbr:`operator (本方法描述將本型別作為左運算元時可用的有效運算子。)`
.. |bitfield| replace:: :abbr:`BitField (此值是由下列旗標組成的位元遮罩整數。)`
.. |void| replace:: :abbr:`void (無回傳值。)`