{"id":17968607,"url":"https://github.com/speykious/seeshark","last_synced_at":"2025-10-05T09:43:08.704Z","repository":{"id":39590358,"uuid":"424622946","full_name":"Speykious/SeeShark","owner":"Speykious","description":"Simple C# camera library.","archived":false,"fork":false,"pushed_at":"2025-06-13T07:05:00.000Z","size":525,"stargazers_count":154,"open_issues_count":13,"forks_count":17,"subscribers_count":10,"default_branch":"main","last_synced_at":"2025-08-11T04:38:55.212Z","etag":null,"topics":["camera","csharp","dotnet","ffmpeg","ffmpeg-wrapper","video"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Speykious.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":"2021-11-04T14:21:27.000Z","updated_at":"2025-07-21T12:19:01.000Z","dependencies_parsed_at":"2024-01-05T20:51:51.721Z","dependency_job_id":"64a6f648-bf00-4634-a65d-f5ce509582b7","html_url":"https://github.com/Speykious/SeeShark","commit_stats":null,"previous_names":["vignetteapp/seeshark"],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/Speykious/SeeShark","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Speykious%2FSeeShark","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Speykious%2FSeeShark/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Speykious%2FSeeShark/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Speykious%2FSeeShark/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Speykious","download_url":"https://codeload.github.com/Speykious/SeeShark/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Speykious%2FSeeShark/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270328949,"owners_count":24565769,"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","status":"online","status_checked_at":"2025-08-13T02:00:09.904Z","response_time":66,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["camera","csharp","dotnet","ffmpeg","ffmpeg-wrapper","video"],"created_at":"2024-10-29T14:40:57.174Z","updated_at":"2025-10-05T09:43:03.665Z","avatar_url":"https://github.com/Speykious.png","language":"C#","readme":"# SeeShark\n\n\u003e Simple C# camera and display library.\n\nWhen you SeeShark, you C#!\n\nSeeShark is a simple cross-platform .NET library for handling camera and screen display inputs on Linux, Windows and MacOS.\n\nUsing FFmpeg, it allows you to enumerate camera and display devices and decode raw frames in 206 different pixel formats (because that's how powerful FFmpeg is!).\n\nFeatures include:\n- Zero-copy.\n- Memory-safe.\n- Cross platform (Tested on Windows and Linux, might work on more platforms like MacOS).\n- Managing camera and display devices.\n- Control framerate, resolution and input format.\n- Notifies the application if devices get connected/disconnected.\n- Provides synchronous (method-driven) and asynchronous (event-driven) code flow.\n- Supports 206 different pixel formats.\n- Conversion of a frame from a pixel format to another.\n- Scaling frames.\n- Access to raw pixel data.\n\nFeatures **don't** include:\n- Saving a frame as an image (here's a [wiki page on how to do it](https://github.com/Speykious/SeeShark/wiki/Saving-images) using ImageSharp).\n- Recording a video stream to a video file.\n- Managing audio devices.\n\n***\n\n## Example code\n\n```cs\nusing System;\nusing System.Threading;\nusing SeeShark;\nusing SeeShark.FFmpeg;\nusing SeeShark.Device;\n\nnamespace YourProgram;\n\n// This program will display camera frames info for 10 seconds.\nclass Program\n{\n    static void Main(string[] args)\n    {\n        // Create a CameraManager to manage camera devices\n        using var manager = new CameraManager();\n\n        // Get the first camera available\n        using var camera = manager.GetCamera(0);\n\n        // Attach your callback to the camera's frame event handler\n        camera.OnFrame += frameEventHandler;\n\n        // Start decoding frames asynchronously\n        camera.StartCapture();\n\n        // Just wait a bit\n        Thread.Sleep(TimeSpan.FromSeconds(10));\n\n        // Stop decoding frames\n        camera.StopCapture();\n    }\n\n    // Create a callback for decoded camera frames\n    private static void frameEventHandler(object? _sender, FrameEventArgs e)\n    {\n        // Only care about new frames\n        if (e.Status != DecodeStatus.NewFrame)\n            return;\n\n        Frame frame = e.Frame;\n\n        // Get information and raw data from a frame\n        Console.WriteLine($\"New frame ({frame.Width}x{frame.Height} | {frame.PixelFormat})\");\n        Console.WriteLine($\"Length of raw data: {frame.RawData.Length} bytes\");\n    }\n}\n```\n\nYou can also look at our overcommented [`SeeShark.Example.Ascii`](./SeeShark.Example.Ascii/) program which displays your camera input with ASCII characters.\n\nSee demo of the example below.\n\n[![ASCII output of OBS virtual camera, feat. Bad Apple!!](https://user-images.githubusercontent.com/34704796/146024429-6b3d9188-5fd9-4463-8014-b2a33071c29e.gif)](https://i.imgur.com/YnW5Nn2.gif)\n\n***\n\n## Contribute\n\nYou can request a feature or fix a bug by reporting an issue.\n\nIf you feel like fixing a bug or implementing a feature, you can fork this repository and make a pull request at any time!\n\n## Vignette\n\nThis library was previously hosted on https://github.com/vignetteapp/SeeShark. It was first made to be used in Vignette's vtuber application. Now, it is its own self-contained library!\n\n## License\n\nThis library is licensed under the BSD 3-Clause License.\nSee [LICENSE](LICENSE) for details.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspeykious%2Fseeshark","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fspeykious%2Fseeshark","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspeykious%2Fseeshark/lists"}