{"id":20980459,"url":"https://github.com/flowingspdg/vmix-rs","last_synced_at":"2026-05-21T15:04:55.625Z","repository":{"id":95118277,"uuid":"608310882","full_name":"FlowingSPDG/vmix-rs","owner":"FlowingSPDG","description":"vMix HTTP/TCP API Library for Rust language","archived":false,"fork":false,"pushed_at":"2025-03-05T16:25:59.000Z","size":29,"stargazers_count":1,"open_issues_count":5,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-10T23:18:23.064Z","etag":null,"topics":["rust","vmix"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/FlowingSPDG.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-03-01T18:54:34.000Z","updated_at":"2023-03-01T19:03:42.000Z","dependencies_parsed_at":"2023-04-01T06:48:58.566Z","dependency_job_id":null,"html_url":"https://github.com/FlowingSPDG/vmix-rs","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FlowingSPDG%2Fvmix-rs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FlowingSPDG%2Fvmix-rs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FlowingSPDG%2Fvmix-rs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FlowingSPDG%2Fvmix-rs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/FlowingSPDG","download_url":"https://codeload.github.com/FlowingSPDG/vmix-rs/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243382934,"owners_count":20282050,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["rust","vmix"],"created_at":"2024-11-19T05:28:38.813Z","updated_at":"2026-05-21T15:04:55.619Z","avatar_url":"https://github.com/FlowingSPDG.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# vmix-rs\n\nA Rust library for interacting with vMix via TCP and HTTP APIs.\n\n[![Crates.io](https://img.shields.io/crates/v/vmix-rs.svg)](https://crates.io/crates/vmix-rs)\n[![Documentation](https://docs.rs/vmix-rs/badge.svg)](https://docs.rs/vmix-rs)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\n## Features\n\nThis library is organized into separate crates for different use cases:\n\n- **vmix-core**: Core data structures (XML parsing optional via `xml` feature)\n- **vmix-tcp**: TCP API client\n- **vmix-http**: HTTP API client (async)\n- **vmix-rs**: Convenience wrapper (this crate)\n\n## Installation\n\n### Desktop Applications\n\n```toml\n[dependencies]\n# Both TCP and HTTP support\nvmix-rs = { version = \"0.2.0\", features = [\"full\"] }\n\n# TCP only\nvmix-rs = { version = \"0.2.0\", features = [\"tcp\"] }\n\n# HTTP only\nrs = { version = \"0.2.0\", features = [\"http\"] }\n```\n\n### WebAssembly\n\n```toml\n[dependencies]\n# With XML parsing support\ncore = { version = \"0.2.0\", features = [\"xml\"] }\n```\n\n### Embedded Systems (no_std)\n\n```toml\n[dependencies]\n# Struct definitions only (lightweight)\ncore = \"0.2.0\"\n\n# With XML parsing (if needed)\ncore = { version = \"0.2.0\", features = [\"xml\"] }\n```\n\n## Usage\n\n### Desktop Applications\n\n```rust\nuse vmix_rs::{VmixApi, HttpVmixClient};\nuse std::time::Duration;\n\n// TCP API\nlet client = VmixApi::new(\"127.0.0.1:8099\".parse()?, Duration::from_secs(5))?;\n\n// HTTP API\nlet http_client = HttpVmixClient::new(\"127.0.0.1:8088\".parse()?, Duration::from_secs(5));\n```\n\n### WebAssembly\n\n```rust\nuse vmix_core::{Vmix, from_str};\n\n// Fetch XML from vMix via your HTTP client\n// let xml = fetch_xml_from_vmix().await?;\n\n// Parse XML to strongly-typed structures\nlet vmix_state: Vmix = from_str(\u0026xml)?;\nprintln!(\"Active input: {}\", vmix_state.active);\n```\n\n### Embedded Systems (Embassy, etc.)\n\n```rust\n#![no_std]\nextern crate alloc;\n\nuse vmix_core::Vmix;\n\n// Option 1: Use struct definitions only\n// Manually populate structs from TCP XMLTEXT commands\n// Example: XMLTEXT vmix/active -\u003e \"1\"\n\n// Option 2: With XML parsing (requires 'xml' feature)\n#[cfg(feature = \"xml\")]\nuse vmix_core::from_str;\n\n#[cfg(feature = \"xml\")]\nfn parse_vmix_xml(xml: \u0026str) -\u003e Result\u003cVmix, quick_xml::DeError\u003e {\n    from_str(xml)\n}\n```\n\n## Examples\n\n```bash\n# TCP client\ncargo run --example cli --features tcp\n\n# HTTP client\ncargo run --example http_example --features http\n\n# TCP/HTTP comparison\ncargo run --example tcp_http_comparison --features full\n```\n\n## License\n\nMIT\n\n## Author\n\nShugo Kawamura ([@FlowingSPDG](https://github.com/FlowingSPDG))\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflowingspdg%2Fvmix-rs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fflowingspdg%2Fvmix-rs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflowingspdg%2Fvmix-rs/lists"}