All Projects → cyanreg → txproto

cyanreg / txproto

Licence: LGPL-2.1 license
Scriptable multimedia sandbox. Captures, streams and records from a variety of sources.

Programming Languages

c
50402 projects - #5 most used programming language
lua
6591 projects
Meson
512 projects
python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to txproto

Scrcast
Drop-in Android Screen Recording Library
Stars: ✭ 178 (+161.76%)
Mutual labels:  recording
castty
A CLI tool to record audio-enabled screencasts of your terminal, for the web.
Stars: ✭ 109 (+60.29%)
Mutual labels:  recording
APStreamline
Live Video Streaming Made Easy!
Stars: ✭ 98 (+44.12%)
Mutual labels:  streaming-video
Opencast
The free and open source solution for automated video capture and distribution at scale.
Stars: ✭ 194 (+185.29%)
Mutual labels:  recording
OBS Settings Manager
Backup your OBS Studio profiles and manage them in an easy, user friendly way.
Stars: ✭ 20 (-70.59%)
Mutual labels:  recording
Oreka
Enterprise telephony recording and retrieval system with web based user interface.
Stars: ✭ 20 (-70.59%)
Mutual labels:  recording
Avfoundationrecorder
Swift audio recorder using AVFoundation
Stars: ✭ 174 (+155.88%)
Mutual labels:  recording
midi-recorder
🎹 The easiest way to record MIDI. No install. Automatically records.
Stars: ✭ 38 (-44.12%)
Mutual labels:  recording
drachtio-siprec-recording-server
SIPREC recording server based on drachtio and rtpengine
Stars: ✭ 58 (-14.71%)
Mutual labels:  recording
YoutubeLiveChannelRecorder
Records YouTube live streams and Semi-Working TWITCH live streams for given channels automatically.
Stars: ✭ 15 (-77.94%)
Mutual labels:  recording
Drywetmidi
.NET library to read, write, process MIDI files and to work with MIDI devices
Stars: ✭ 204 (+200%)
Mutual labels:  recording
ryuanime
A free anime streaming , using the jkanime content by scraping the jkanime website.
Stars: ✭ 20 (-70.59%)
Mutual labels:  streaming-video
obplayer
📻 OBPlayer Streaming Automation Playout with CAP EAS Alerting
Stars: ✭ 93 (+36.76%)
Mutual labels:  streaming-video
Detoxrecorder
Detox Recorder is a utility for recordings steps for a Detox test as you use your app in Simulator. After recording the test, add expectations that check if interface elements are in the expected state.
Stars: ✭ 179 (+163.24%)
Mutual labels:  recording
uos
United Open-libraries of Sound. United procedures for open-source audio libraries. For FPC/Lazarus/fpGUI/MSEgui.
Stars: ✭ 112 (+64.71%)
Mutual labels:  recording
Torchfunc
PyTorch functions and utilities to make your life easier
Stars: ✭ 177 (+160.29%)
Mutual labels:  recording
react-native-recording
React Native audio recording module used for DSP with Android + iOS
Stars: ✭ 86 (+26.47%)
Mutual labels:  recording
rdScreenRecordSDK-for-Windows
Windows录屏SDK
Stars: ✭ 19 (-72.06%)
Mutual labels:  recording
VRStreaming
Unity Render Streaming SDK to stream VR from CloudXR to WebXR over WebRTC
Stars: ✭ 112 (+64.71%)
Mutual labels:  streaming-video
SVisual
Monitoring and record(save) of data for Arduino and STM32
Stars: ✭ 21 (-69.12%)
Mutual labels:  recording

txproto

A fully scriptable and flexible multimedia streaming/handling program.

Features

  • Fully scriptable via Lua
  • Fully atomic API
  • Every frame is perfect
  • Frame-perfect synchronization between video and audio capture
  • Custom first-class capture/output code for minimal overhead:
    • Most feature-complete and accurate Pulseaudio implementation, including isolated client capture
    • Zero-copy Wayland capture via the wlr-export-dmabuf-unstable protocol
    • Low-overhead X11 capture via XCB/SHM
    • Wayland capture via the wlr-screencopy-unstable protocol (both software or DMA-BUF frames supported)
  • Second-class libavdevice capture/output support
  • Headless operation supported
  • Optional Vulkan-only GUI via libplacebo, supported window systems:
    • Wayland
  • Minimal dependencies (FFmpeg and Lua required, libplacebo and all custom capture code optional)
  • Liberally licensed (LGPL v2.1)

Building

Complete list of dependencies:

  • FFmpeg (git master currently required)
  • libplacebo (git master)
  • Lua 5.4

Optional dependencies

  • Editline 3.1 (for a command-line interface)
  • libpulse (for Pulseaudio capture)
  • Wayland (wayland-scanner,client,cursor,protocols,xkbcommon and libdrm, for Wayland capture)

To build, simply do:

meson build

ninja -C build

The resulting binary in ./build/src/txproto is portable and can be ran anywhere.

To simplify building, libplacebo can be built and bundled simultaneously by creating a subprojects directory and cloning the libplacebo repository into subprojects/libplacebo. If an unsuitable libplacebo version already exist on the system, use meson setup --force-fallback-for libplacebo build to force building from the subprojects directory.

Running

If no scripts are specified, txproto will, by default, shadow the entire screen to allow the user to screenshot a portion of the screen via the mouse.

To run a script: ./build/txproto -s <path to script>. Example scripts can be found in the examples directory. CLI parameters are described in the section below. Script syntax is described in the Lua API documentation.

CLI

Argument Description
-s path Specify a script to run.
-e string Specifies a script entry function (default: 'main').
-r string Comma-separated list of system Lua packages to include. Searches the local directory first, then the system directories. Note: for security, io, os and require are not loaded by default.
-V string Specifies a global logging level (quiet, error, warn, info, verbose, debug, trace). For a single component, the syntax is <component>=<level> . Multiple values can be given if separated via commas.
-L path Specifies a log file. Warning: always at maximum verbose level, this will get big quickly.
-C Enable the command-line interface.
-h Display help (this).
-v Displays program version info.
trailing arguments Given to the script as variable arguments to the entrypoint (function main(...) local argument1, argument2, etc = ... end).

Discussions and help

Join #txproto on Libera, or #txproto:pars.ee on Matrix.

Feature policy

New feature Policy
Custom inputs Always accepted
Custom outputs Always accepted
Platform integration Accepted, via Lua scripts
Custom muxers Welcome
Custom filters Unlikely, submit to FFmpeg first
Custom de/encoders Never, submit any to FFmpeg

Alternatively, for custom inputs, outputs, and muxers, a dynamic linking ABI will be provided to allow for the use of non-free binaries.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].