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 運用はまぁまぁハードルが高かったです。