SeeShark
SeeShark copied to clipboard
Seeshark 5
For SeeShark 5, I chose to completely rewrite the entire thing.
Having to deal with FFmpeg setup is becoming tiring. Some missing features meant that I had to write interop code for each OS anyway, and since I'm always tied to a specific version of it, it's also not very flexible. So I decided it's best to not use FFmpeg at all, and to instead use the OS APIs directly. That way SeeShark even has a chance to be somewhat done at some point in the future. At the very least, it'll be easier to maintain, with no external dependencies, and the only things to care about being OS API changes and .NET version updates.
As a side note, since this is where SeeShark is going, I might decide to add support for retrieving audio in the future. There's something to be done both for cameras and displays.
Features to be implemented
Meaning of the symbols:
- ✓ — implemented
- ✗ — not implemented
- ¬ — incompatible
Camera
Feature | Linux (V4L2) |
MacOS (AVFoundation) |
Windows (DirectShow) |
---|---|---|---|
Get available cameras | ✓ | ✗ | ✗ |
Get available formats of camera | ✓ | ✗ | ✗ |
Open camera | ✓ | ✗ | ✗ |
Open camera with video format options | ✓ | ✗ | ✗ |
Configure camera with video format options | ✗ | ✗ | ✗ |
Capture raw frames from camera | ✓ | ✗ | ✗ |
Notify (dis)connections of cameras | ✗ | ✗ | ✗ |
Display
Feature | Linux (X11) |
Linux (Wayland) |
MacOS (ScreenCaptureKit) |
Windows (GDI) |
---|---|---|---|---|
Get available displays | ✗ | ✗ | ✗ | ✗ |
Get available formats of a display | ✗ | ✗ | ✗ | ✗ |
Open display | ✗ | ✗ | ✗ | ✗ |
Open display with video format options | ✗ | ✗ | ✗ | ✗ |
Capture raw frames from display | ✗ | ✗ | ✗ | ✗ |
Status of the PR
Currently implementing camera support for MacOS.