2 min read

Rust で利用できる音声/映像デバイスライブラリを公開しました

Rust で音声や映像デバイスを利用できる macOS / Linux / Windows 向けのデバイスライブラリを GitHub にて Apache-2.0 で公開しました。かなり丁寧に作っているので、もし良ければ使ってみてください。

audio-device-rs

GitHub - shiguredo/audio-device-rs
Contribute to shiguredo/audio-device-rs development by creating an account on GitHub.
  • macOS: CoreAudio / AudioToolbox
  • Linux: PulseAudio (デフォルト) / PipeWire
  • Windows: WASAPI

ポイントは Linux の PipeWire 対応です。詳細はリポジトリを見てください。

video-device-rs

GitHub - shiguredo/video-device-rs
Contribute to shiguredo/video-device-rs development by creating an account on GitHub.
  • macOS: AVFoundation
  • Linux: V4L2 (デフォルト) / PipeWire
  • Windows: Media Foundation

ポイントは Linux の PipeWire 対応です。詳細はリポジトリを見てください。PipeWire は映像にも対応しています。また libcamera 対応も進めています。

windows-rs スゴイ

さて、今回 Windows 対応するに当たって採用したのが Microsoft が公開している windows-rs です。なんと C/C++ 不要で Rust だけでデバイス周りの実装ができてしまうと言う優れものです。

GitHub - microsoft/windows-rs: Rust for Windows
Rust for Windows. Contribute to microsoft/windows-rs development by creating an account on GitHub.

GitHub Self-hosted runner を利用したデバイステスト

今回音声や映像デバイスを扱うライブラリを開発するにあたて、チャレンジしてみたのが macOS / Linux (Ubuntu) / Windows での GitHub Self-hosted runner を用意して、実際のデバイスを準備して CI を回してみています。

実際、構築してみると安心感がスゴイです。こちらもお勧めしたい。ただ Windows での GitHub Self-hosted runner 運用はまぁまぁハードルが高かったです。