Skip to content

a multithreaded screen recording tool with stream and disk output

License

Notifications You must be signed in to change notification settings

jonasiwnl/beehive

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

34 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Beehive

A screen recording tool that can save to disk (MP4 or MPTS) or stream to a server (RTSP).

Dependencies

ffmpeg is the only dependency. It needs to be installed and should be in PATH (beehive will run commands like ffmpeg ...).

Usage

Recording

Type make release to build the executable, then type ./beehive_release to run it. Type q or quit into stdin to quit.

Streaming

First, you need a RTSP server. Easiest one to use out of the box is mediamtx. Expose it globally with something like ngrok. Then, run beehive like above with RTSP output. Finally, the client can use viewstream.py to watch the stream (or any other method to watch rtsp streams).

Output Formats

with my minimal testing, i've found that mpeg4 has lower overhead, but with much worse quality output (color, bitrate, etc). mpegts (using h264) has better quality with more overhead.

Known Issues

  • Most CG functions are deprecated on Mac. This results in incomprehensible video. Can't do anything about this.
  • On Windows, other windows can overlay streaming one
  • 2 window instances for fullscreen VSCode on OSX

Performance stuff to test

  • producer and consumer threads for creating images and piping them
  • CGDisplayStream vs individual CGWindowListCreateImage calls
  • kCGWindowImageNominalResolution vs kCGWindowImageBestResolution

About

a multithreaded screen recording tool with stream and disk output

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published