#janus #web-rtc #janus-gateway #async #audio-video

jarust_plugins

Janus 客户端 SDK,用 Rust 实现

18 个不稳定版本 (3 个重大变更)

0.4.0 2024年6月26日
0.3.0 2024年5月24日
0.2.9 2024年5月11日
0.2.7 2024年4月25日
0.1.4 2024年1月28日

#1584 in 异步

Download history 10/week @ 2024-04-13 97/week @ 2024-04-20 19/week @ 2024-04-27 127/week @ 2024-05-04 193/week @ 2024-05-11 111/week @ 2024-05-18 31/week @ 2024-05-25 4/week @ 2024-06-01 3/week @ 2024-06-08 1/week @ 2024-06-15 141/week @ 2024-06-22 103/week @ 2024-06-29 247/week @ 2024-07-27

332 每月下载量

MIT 许可证

115KB
3K SLoC

Jarust Plugins

预定义插件列表。

当前插件

  • 回声测试
  • 音频桥接
  • 视频会议室

回声测试示例

use jarust::jaconfig::JaConfig;
use jarust::jaconfig::TransportType;
use jarust_plugins::echotest::events::EchoTestPluginEvent;
use jarust_plugins::echotest::messages::EchoTestStartMsg;
use jarust_plugins::echotest::EchoTest;
use tracing_subscriber::EnvFilter;

#[tokio::main(flavor = "current_thread")]
async fn main() -> anyhow::Result<()> {
    tracing_subscriber::fmt()
        .with_env_filter(EnvFilter::from_default_env().add_directive("jarust=trace".parse()?))
        .init();

    let mut connection = jarust::connect(
        JaConfig::new("ws://127.0.0.1:8188/ws", None, "janus"),
        TransportType::Ws,
    )
    .await?;
    let session = connection.create(10).await?;
    let (handle, mut event_receiver, ..) = session.attach_echo_test().await?;

    handle
        .start(EchoTestStartMsg {
            audio: true,
            video: true,
            ..Default::default()
        })
        .await?;

    while let Some(event) = event_receiver.recv().await {
        match event {
            EchoTestPluginEvent::Result { result, .. } => {
                tracing::info!("result: {result}");
            }
        }
    }

    Ok(())
}

音频桥接示例

use jarust::jaconfig::JaConfig;
use jarust::jaconfig::TransportType;
use jarust_plugins::audio_bridge::AudioBridge;
use tracing_subscriber::EnvFilter;

#[tokio::main(flavor = "current_thread")]
async fn main() -> anyhow::Result<()> {
    tracing_subscriber::fmt()
        .with_env_filter(EnvFilter::from_default_env().add_directive("jarust=trace".parse()?))
        .init();

    let mut connection = jarust::connect(
        JaConfig::new("ws://127.0.0.1:8188/ws", None, "janus"),
        TransportType::Ws,
    )
    .await?;
    let session = connection.create(10).await?;
    let (handle, ..) = session.attach_audio_bridge().await?;

    let result = handle.list().await?;
    tracing::info!("Rooms {:#?}", result);

    Ok(())
}

依赖项

~4.5–7.5MB
~127K SLoC