a playground for exploring media capture, processing and publishing with rust

Overview

vidrs: a playground for exploring media capture, processing and publishing with rust

How to use

On a MacOS system with an attached camera you can call cargo run and go to the mentioned server address http://localhost:8080.

Features

  • bindings for camera capturing on MacOS using madsmtm/objc2
  • encoding of 4:2:0 camera frames into VP8 frames using astraw/env-libvpx-sys
  • sending VP8 frames via WebRTC to a browser test app using webrtc-rs/webrtc
  • handling WebRTC offer/answer exchange with tokio, hyper and serde
  • miniquad egui view of local camera stream with YUV decoding shader

Ideas for feature work

  • receive VP8 video via WebRTC, decode and write or display it
  • add support for Linux and Windows camera capturing using raymanfx/eye-rs and l1npengtul/nokhwa
  • add camera device selection
  • better way of figuring out which frame pixel format is preferred for the use case
  • use algesten/str0m for handling WebRTC
  • spin off some crates
  • some dependencies use objc instead of objc2, so MacOS bindings could be implemented in different binding ecosystems
  • use some GUI to show video too, like egui, iced or tauri
You might also like...
Fast and simple datetime, date, time and duration parsing for rust.

speedate Fast and simple datetime, date, time and duration parsing for rust. speedate is a lax† RFC 3339 date and time parser, in other words, it pars

A simpler and 5x faster alternative to HashMap in Rust, which doesn't use hashing and doesn't use heap

At least 5x faster alternative of HashMap, for very small maps. It is also faster than FxHashMap, hashbrown, ArrayMap, and nohash-hasher. The smaller

Safe, efficient, and ergonomic bindings to Wolfram LibraryLink and the Wolfram Language

wolfram-library-link Bindings to the Wolfram LibraryLink interface, making it possible to call Rust code from the Wolfram Language. This library is us

This blog provides detailed status updates and useful information about Theseus OS and its development

The Theseus OS Blog This blog provides detailed status updates and useful information about Theseus OS and its development. Attribution This blog was

Omeglib, a portmanteau of "omegle" and "library", is a crate for interacting with omegle, simply and asynchronously

Omeglib, a portmanteau of "omegle" and "library", is a crate for interacting with omegle, simply and asynchronously. It is intended to suit one's every requirement regarding chat on omegle.

A tool and library to losslessly join multiple .mp4 files shot with same camera and settings

mp4-merge A tool and library to losslessly join multiple .mp4 files shot with same camera and settings. This is useful to merge multiple files that ar

A tray application for Windows that gives you push notifications and instant downloads of new posts, messages and stories posted by models you subscribe to on Onlyfans.

OF-notifier A tray application for Windows that gives you push notifications and instant downloads of new posts, messages and stories posted by models

Leetcode Solutions in Rust, Advent of Code Solutions in Rust and more

RUST GYM Rust Solutions Leetcode Solutions in Rust AdventOfCode Solutions in Rust This project demostrates how to create Data Structures and to implem

Rust 核心库和标准库的源码级中文翻译,可作为 IDE 工具的智能提示 (Rust core library and standard library translation. can be used as IntelliSense for IDE tools)

Rust 标准库中文版 这是翻译 Rust 库 的地方, 相关源代码来自于 https://github.com/rust-lang/rust。 如果您不会说英语,那么拥有使用中文的文档至关重要,即使您会说英语,使用母语也仍然能让您感到愉快。Rust 标准库是高质量的,不管是新手还是老手,都可以从中

Owner
Gilbert Röhrbein
Gilbert Röhrbein
A Rust implementation of generic prefix tree (trie) map with wildcard capture support

prefix_tree_map A Rust implementation of generic prefix tree (trie) map with wildcard capture support. Design Trie is a good data structure for storin

EAimTY 3 Dec 6, 2022
🦀 My Rusty Playground

rust playground A language empowering everyone to build reliable and efficient software. Resources The Book Rustlings Rust by Example Take your first

Eliaz Bobadilla 5 Apr 6, 2022
Global-Scale Media Server written in Rust (WebRTC/RTMP/SIP)

8xFF Media Server: Global-Scale Ultra-Low Latency Streaming Server written in Rust A media server that supports multiple protocols, including WebRTC,

8xFF 8 Nov 8, 2023
Global-Scale Media Server written in Rust (WebRTC/RTMP/SIP)

Decentralized Ultra-Low Latency Streaming Server A decentralized media server designed to handle media streaming at a global-scale, making it suitable

8xFF 11 Nov 26, 2023
A simple local storage media library manager.

OFFFLIX A simple application to auto manage series on your local storage. Features Resume watching Play next episode Auto increment season Play random

null 33 Mar 7, 2023
🔀 Rusty flow graph processing library

flowing flowing is a flow graph processing library written in Rust. It shall serve as a general-purpose building block for all kinds of dataflow progr

Micha Hanselmann 2 Oct 4, 2022
In this repository you can find modules with code and comments that explain rust syntax and all about Rust lang.

Learn Rust What is this? In this repository you can find modules with code and comments that explain rust syntax and all about Rust lang. This is usef

Domagoj Ratko 5 Nov 5, 2022
A comprehensive and FREE Online Rust hacking tutorial utilizing the x64, ARM64 and ARM32 architectures going step-by-step into the world of reverse engineering Rust from scratch.

FREE Reverse Engineering Self-Study Course HERE Hacking Rust A comprehensive and FREE Online Rust hacking tutorial utilizing the x64, ARM64 and ARM32

Kevin Thomas 98 Jun 21, 2023
An API for getting questions from http://either.io implemented fully in Rust, using reqwest and some regex magic. Provides asynchronous and blocking clients respectively.

eithers_rust An API for getting questions from http://either.io implemented fully in Rust, using reqwest and some regex magic. Provides asynchronous a

null 2 Oct 24, 2021