依存が少ない Rust ライブラリを色々作った
C++ から Rust へ少しずつ移行するにあたり、Rust ライブラリを色々作っていました。簡単に紹介していきます。
audio-device-rs
Rust から macOS / Linux / Windows で音声デバイスを扱うライブラリです。
- macOS: CoreAudio / AudioToolbox
- Linux: PulseAudio (デフォルト) / PipeWire
- Windows: WASAPI
video-device-rs
Rust から macOS / Linux / Windows で映像デバイスを扱うライブラリです。
- macOS: AVFoundation
- Linux: V4L2 (デフォルト) / PipeWire
- Windows: Media Foundation
audio-toolbox-rs
Rust から macOS の Audio Toolbox を利用して AAC を利用できるライブラリです。
video-toolbox-rs
Rust から macOS の Video Toolbox を利用して H.264 / H.265 を利用できるライブラリです。
amf-rs
Rust から Linux の AMD GPU に積まれているハードウェアアクセラレーターを利用できるライブラリです。 VP9 / AV1 / H.264 / H.265 が利用できます。
vpl-rs
Rust から Linux の Intel GPU (N150 とかでも利用できる) に積まれているハードウェアアクセラレーターを利用できるライブラリです。 VP9 / AV1 / H.264 / H.265 が利用できます。
nvcodec-rs
Rust から Linux の NVIDIA GPU に積まれているハードウェアアクセラレーターを利用できるライブラリです。AV1 / H.264 / H.265 が利用できます。
openh264-rs
Rust から Cisco が提供している OpenH264 ライブラリを利用できるライブラリです。ダイナミックリンクかつパス指定する必要があります。
macOS / Linux / Windows 対応です。
libvpx-rs
Rust から libvpx を利用できるライブラリです。prebuilt 対応なので libvpx を時前でビルドする必要はありません。VP8 / VP9 が利用できます。シンボリック名の書き換え対応しています。
macOS / Linux / Windows 対応です。
aom-rs
Rust から libaom を利用できるライブラリです。 prebuilt 対応なので libaom を時前でビルドする必要はありません。AV1 のエンコーダーとデコーダーを利用できます。シンボリック名の書き換え対応しています。
macOS / Linux / Windows 対応です。
dav1d-rs
Rust から dav1d を利用できるライブラリです。prebuilt 対応なので dav1d を時前でビルドする必要はありません。AV1 のデコーダーを利用できます。シンボリック名の書き換え対応しています。
macOS / Linux / Windows 対応です。
svt-av1-rs
Rust から SVT-AV1 を利用できるライブラリです。prebuilt 対応なので SVT-AV1 wお時前でビルドする必要はありません。AV1 のエンコーダーを利用できます。
macOS / Linux / Windows 対応です。
opus-rs
Rust から opus を利用できるライブラリです。prebuilt 対応なので opus を時前でビルドする必要はありません。シンボリック名の書き換え対応しています。
macOS / Linux / Windows 対応です。
fdk-aac-rs
Rust から libfdk-aac を利用できるライブラリです。AAC を利用できるようになります。ダイナミックリンクかつパス指定する必要があります。
Linux でのみ利用できます。
libyuv-rs
Rust から libyuv を利用できるライブラリです。シンボリック名の書き換えに対応しています。
libcamera-rs
Rust から Rapsberry Pi の libcamera を利用できるライブラリです。libcamera は ダイナミックリンクかつパス指定する必要があります。
v4l2-rs
Rust から Linux の V4L2 を利用できるライブラリです。現時点では Raspberry Pi の V4L2-M2M でのみ利用できます。Raspberry 4 までの H.264 ハードウェアアクセラレーターが利用できます。
mp4-rs
Rust から MP4 を利用できるライブラリです。依存 0 かつ no_std 対応です。C API と Wasm も提供しています。
m3u8-rs
Rust から HLS で利用する m3u8 形式ファイルを利用できるライブラリです。依存 0 です。
mpd-rs
Rust から MPEG-DASH で利用する mpd 形式ファイルを利用できるライブラリです。依存を最小限に抑えています。
[dependencies]
xml = "1.2"s3-rs
Rust から Amazon S3 API を利用できる Sans I/O なクライアントライブラリです。依存を最小限に抑えています。
[dependencies]
# 署名計算とチェックサム計算 (feature で切り替え)
# - 署名: SHA-256, HMAC-SHA256
# - チェックサム: SHA-256, SHA-1
aws-lc-rs = { version = "1", optional = true }
sha2 = { version = "0.10", optional = true }
sha1 = { version = "0.10", optional = true }
hmac = { version = "0.12", optional = true }
# チェックサム計算 (CRC32, CRC32C, CRC64NVME)
crc-fast = "1"
# Content-MD5 / SSE-C key MD5 計算
md-5 = "0.10"
base64 = "0.22"
# XML パース
xml = "1.2"rtmp-rs
Rust から RTMP を利用できる Sans I/O な依存 0 ライブラリです。
rtsp-rs
Rust から RTSP を利用できるライブラリです。依存を最小限に抑えています。
[dependencies]
shiguredo_http11 = { version = "2026.1.1" }
md-5 = "0.10"srt-rs
Rust から SRT を利用できるライブラリです。依存を最小限に抑えています。
[dependencies]
aws-lc-rs = "1"cargo-sysroot
Rust のクロスコンパイル用 sysroot を JSON 設定ファイルから生成し、.cargo/config.toml を自動設定する Cargo サブコマンドです。
Raspberry Pi 向けのクロスコンパイル環境を気軽に作れるようになります。
cmake-rs
CMake の公式プリビルトバイナリをダウンロードして提供するライブラリです。新しい CMake を利用するのが簡単になります。
toml-rs
Rust から TOML を利用できる依存 0 のライブラリです。v1.0.0 / v1.1.0 に完全準拠しています。
http11-rs
Rust から HTTP/1.1 を利用できる依存 0 の Sans I/O なライブラリです。圧縮関連はトレイトを利用して好きに組み込む事ができます。
http2-rs
Rust から HTTP/2 を利用できる依存 0 の Sans I/O なライブラリです。WebTransport over HTTP/2 に対応しています。
http3-rs
Rust から HTTP/3 を利用できる依存 0 の Sans I/O なライブラリです。WebTransport over HTTP/3 に対応しています。
Safari 24.6 で入った WebTransport でも動作することを確認しています。
websocket-rs
Rust から WebSocket (HTTP/1.1) を利用できる依存を最小限に抑えた Sans I/O なライブラリです。
[dependencies]
base64 = "0.22"
sha1 = "0.10"
flate2 = "1.1"
shiguredo_http11 = "2026.1.1"webrtc-rs
Rust から libwebrtc を利用できるライブラリです。libwebrtc の C API を生やして、それを Rust で薄くラップしています。prebuilt に対応しているため libwebrtc をビルドする必要はありません。
macoOS / Linux / Windows とは別に Raspberry Pi にも対応しています。
raw-player-rs
Rust から SDL3 を利用して生の音声や映像を再生するプレイヤーです。prebuilt に対応しているため SDL をビルドする必要はありません。
raden
Rust で利用できる GPU なしで利用できる 2D ベクターグラフィックスライブラリです。 Cranelift ライブラリを利用して高速化しています。API は Blend2D に寄せています。
CI 環境など GPU が無い環境でもダミー映像を気軽に作れるように開発しています。
[dependencies]
cranelift-codegen = "=0.130.0"
cranelift-frontend = "=0.130.0"
cranelift-jit = "=0.130.0"
cranelift-module = "=0.130.0"
cranelift-native = "=0.130.0"