Add FFmpegOpusAudio and other voice improvements

Rework FFmpeg player and add FFmpegOpusAudio

I have extracted some of the base FFmpeg source code into its own
base class and reimplemented the PCM and the new Opus variants.

Support avconv probing

Also fix a few things

Update `__all__`

Fix the bugs

Rework probe functions and add factory function

Probing involves subprocess so it has been reworked into an async
factory function.

Add docs + a few tweaks

* Removed unnecessary read() and is_opus() functions from FFmpegAudio
* Clear self._stdout in cleanup()
* Add 20 second process communication timeout to probe functions
* Capped probe function bitrate values at 512

Change AudioPlayer to use more accurate, monotonic time.perf_counter()

Add lazy opus loading

The library now no longer loads libopus on import, only on
opus.Encoder creation or manually.

Fix review nits
This commit is contained in:
Imayhaveborkedit
2019-06-22 02:33:53 -04:00
committed by Rapptz
parent 042a234eac
commit fedf26bf3e
5 changed files with 457 additions and 52 deletions

View File

@ -60,9 +60,15 @@ Voice
.. autoclass:: PCMAudio
:members:
.. autoclass:: FFmpegAudio
:members:
.. autoclass:: FFmpegPCMAudio
:members:
.. autoclass:: FFmpegOpusAudio
:members:
.. autoclass:: PCMVolumeTransformer
:members: