#discord-api #discord #rtp #api #audio #cache

songbird

一个用于 Discord 语音 API 的异步 Rust 库

27 个版本

0.4.3 2024 年 7 月 17 日
0.4.1 2024 年 2 月 29 日
0.4.0 2023 年 11 月 27 日
0.3.2 2023 年 4 月 9 日
0.0.0 2020 年 11 月 16 日

#68Web 编程

Download history 845/week @ 2024-05-03 722/week @ 2024-05-10 737/week @ 2024-05-17 667/week @ 2024-05-24 793/week @ 2024-05-31 494/week @ 2024-06-07 699/week @ 2024-06-14 800/week @ 2024-06-21 506/week @ 2024-06-28 702/week @ 2024-07-05 928/week @ 2024-07-12 797/week @ 2024-07-19 1083/week @ 2024-07-26 806/week @ 2024-08-02 974/week @ 2024-08-09 707/week @ 2024-08-16

3,677 每月下载次数
8 crates 中使用

ISC 许可证

605KB
13K SLoC

docs-badge next-docs-badge build badge guild-badge crates.io version rust badge

Songbird

Songbird 是一个异步、跨库兼容的 Discord 语音系统,用 Rust 编写。该库提供

  • 一个与 serenitytwilight 兼容的独立网关前端,使用 "gateway""[serenity/twilight]" 以及 "[rustls/native]" 功能。您甚至可以运行无驱动程序,以帮助管理您的 lavalink 会话。
  • 一个独立的语音通话驱动程序,通过 "driver" 功能。如果您可以使用任何其他网关或语言为您的机器人创建 ConnectionInfo,则可以运行 songbird 语音驱动程序。
  • 通过 "receive" 功能处理语音接收和 RT(C)P 数据包。
  • 通过 "simd-json" 功能进行 SIMD 加速 JSON 解码。
  • 默认情况下,一个功能齐全的语音系统,具有事件、队列、在兼容流上搜索、共享的多线程音频流缓存以及从 DCA 文件直接传递 Opus 数据等功能。

意图

Songbird 的网关功能需要您指定 GUILD_VOICE_STATES 意图。

编解码器支持

Songbird 支持所有由 Symphonia 提供的 编解码器和格式(纯 Rust),Opus 支持由 audiopus 提供(libopus 的 FFI 包装器)。

默认情况下,Songbird 不会从 Symphonia 请求任何编解码器 要更改此设置,您需要在您的项目中依赖 Symphonia。

# Including songbird alone gives you support for Opus via the DCA file format.
[dependencies.songbird]
version = "0.4"
features = ["builtin-queue"]

# To get additional codecs, you *must* add Symphonia yourself.
# This includes the default formats (MKV/WebM, Ogg, Wave) and codecs (FLAC, PCM, Vorbis)...
[dependencies.symphonia]
version = "0.5.2"
features = ["aac", "mp3", "isomp4", "alac"] # ...as well as any extras you need!

依赖项

在使用 Songbird 之前,您需要一些系统依赖项。

  • Opus - Discord使用的音频编解码器。audiopus 将在 Linux/MacOS 系统上通过 pkgconf 调用已安装的 libopus 二进制文件(如果可用),否则您需要安装 cmake 从源代码构建 opus。在 Windows 上总是如此。对于 Unix 系统,您可以在 Ubuntu 上使用 apt install libopus-dev 安装库,或在 Arch Linux 上使用 pacman -S opus。如果您没有安装,它将为您构建。然而,您需要安装 C 编译器和 GNU 自动工具。同样,您可以在 Ubuntu 上使用 apt install build-essential autoconf automake libtool m4 安装它们,或在 Arch Linux 上使用 pacman -S base-devel

这是一个必需的依赖项。没有它,Songbird 无法工作。

  • yt-dlp / youtube-dl / (类似分支)- 音频/视频下载工具。yt-dlp 可以根据主存储库上的安装说明进行安装 (请参阅此链接)。您可以使用 Python 的包管理器 pip 安装 youtube-dl,我们推荐这样做。您可以使用命令 pip install youtube_dl 来安装它。或者,您可以使用系统包管理器安装它,在 Ubuntu 上使用 apt install youtube-dl,在 Arch Linux 上使用 pacman -S youtube-dl

这是用户的一个可选依赖项,但作为一个开发依赖项是必需的。它允许 Songbird 从各种网页下载音频/视频源,并将其转换为 Discord 使用的 Opus 音频格式。

示例

可以在 此存储库的示例目录 中找到各种功能类型和集成的完整示例。

贡献

如果您想帮忙或提交问题,请查阅我们的 贡献指南

归属

Songbird 的标志基于版权免费的图片 "Black-Capped Chickadee" 由 George Gorgas White 创作。

依赖项

~9–47MB
~799K SLoC