#cast #google #api-bindings

chromecast

允许您与 Google Cast 兼容设备(例如 Chromecast)进行通信的库。

2 个版本

0.18.2 2023 年 3 月 30 日
0.18.1 2023 年 2 月 17 日

107多媒体

Download history 20/week @ 2024-03-11 25/week @ 2024-03-18 38/week @ 2024-03-25 65/week @ 2024-04-01 20/week @ 2024-04-08 19/week @ 2024-04-15 27/week @ 2024-04-22 20/week @ 2024-04-29 14/week @ 2024-05-06 14/week @ 2024-05-13 16/week @ 2024-05-20 14/week @ 2024-05-27 20/week @ 2024-06-03 19/week @ 2024-06-10 15/week @ 2024-06-17 18/week @ 2024-06-24

每月下载 73
4 个 Crates 中使用(通过 music-player-addons

MIT 许可证

180KB
3.5K SLoC

Docs Build Status

用法

构建

Proto 文件取自 Chromium Open Screen GitHub 镜像

默认情况下,cargo build 不会尝试从位于 protobuf/* 的文件生成 Rust 代码,如果您想这样做,请在构建期间使用 GENERATE_PROTO 环境变量,并确保您在 $PATH 中有 protoc 二进制文件。

$ GENERATE_PROTO=true cargo build

运行示例

通用特性

首先,您需要找出要连接的设备的地址。例如,您可以使用以下命令使用 avahi

$ avahi-browse -a --resolve
// Get some info about the Google Cast enabled device (e.g. Chromecast). 
$ cargo run --example rust_caster -- -a 192.168.0.100 -i

Number of apps run: 1
App#0: Default Media Receiver (CC1AD845)
Volume level: 1
Muted: false

// Run specific app on the Chromecast.
$ cargo run --example rust_caster -- -a 192.168.0.100 -r youtube

// Stop specific active app.
$ cargo run --example rust_caster -- -a 192.168.0.100 -s youtube

// Stop currently active app.
$ cargo run --example rust_caster -- -a 192.168.0.100 --stop-current

The following app has been stopped: Default Media Receiver (CC1AD845)

媒体特性

// Stream a video.
$ cargo run --example rust_caster -- -a 192.168.0.100 -m http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4

// Stream a video of specific format with buffering.
$ cargo run --example rust_caster -- -a 192.168.0.100 -m http://xxx.webm --media-type video/webm --media-stream-type buffered

// Stream video from YouTube (doesn't work with the latest YouTube app, fix is welcome).
$ cargo run --example rust_caster -- -a 192.168.0.100 -m 7LcUOEP7Brc --media-app youtube

// Display an image.
$ cargo run --example rust_caster -- -a 192.168.0.100 -m https://azasypkin.github.io/style-my-image/images/mozilla.jpg

// Change volume level.
$ cargo run --example rust_caster -- -a 192.168.0.100 --media-volume 0.5

// Mute/unmute media.
$ cargo run --example rust_caster -- -a 192.168.0.100 --media-mute [--media-unmute]

// Pause media.
$ cargo run --example rust_caster -- -a 192.168.0.100 --media-app youtube --media-pause

// Resume/play media.
$ cargo run --example rust_caster -- -a 192.168.0.100 --media-app youtube --media-play

// Seek media.
$ cargo run --example rust_caster -- -a 192.168.0.100 --media-app youtube --media-seek 100

有关 --media-type 的所有可能值,请参阅 Google Cast 支持的媒体

DNS TXT 记录描述

  • md - 型号名称(例如 "Chromecast");
  • id - 特定设备的 UUID(不带连字符)(例如 xx12x3x456xx789xx01xx234x56789x0);
  • fn - 设备的友好名称(例如 "Living Room");
  • rs - 未知(例如 "Youtube TV");
  • bs - 未知(例如 "XX1XXX2X3456");
  • st - 未知(例如 "1");
  • ca - 未知(例如 "1234");
  • ic - 图标路径(例如 "/setup/icon.png");
  • ve - 版本(例如:“04”)。

型号名称

  • Chromecast - 普通Chromecast,支持视频/音频;
  • Chromecast Audio - Chromecast Audio设备,仅支持音频。

有用的链接和灵感来源

依赖项

~10-19MB
~354K SLoC