{"id":22850371,"url":"https://github.com/sebastianbecker2/videodedup","last_synced_at":"2025-04-30T06:43:36.462Z","repository":{"id":42366661,"uuid":"299555091","full_name":"SebastianBecker2/VideoDedup","owner":"SebastianBecker2","description":"Tool to deduplicate video files","archived":false,"fork":false,"pushed_at":"2024-12-24T21:05:27.000Z","size":140056,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-30T13:34:56.125Z","etag":null,"topics":["comparison","deduplication","equality","video","windows"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SebastianBecker2.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":"2020-09-29T08:36:37.000Z","updated_at":"2024-11-30T16:10:30.000Z","dependencies_parsed_at":"2024-10-18T11:25:05.979Z","dependency_job_id":null,"html_url":"https://github.com/SebastianBecker2/VideoDedup","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SebastianBecker2%2FVideoDedup","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SebastianBecker2%2FVideoDedup/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SebastianBecker2%2FVideoDedup/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SebastianBecker2%2FVideoDedup/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SebastianBecker2","download_url":"https://codeload.github.com/SebastianBecker2/VideoDedup/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251658194,"owners_count":21622819,"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","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":["comparison","deduplication","equality","video","windows"],"created_at":"2024-12-13T05:07:21.712Z","updated_at":"2025-04-30T06:43:36.422Z","avatar_url":"https://github.com/SebastianBecker2.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# VideoDedup\n\n[![Build status](https://ci.appveyor.com/api/projects/status/ld6w3vd6m49spu27/branch/master?svg=true)](https://ci.appveyor.com/project/SebastianBecker2/videodedup/branch/master)\n\nTool to deduplicate video files.\\\nA duplicate is defined as two videos that visually have the same content. For example if the videos show the same material with different encodings, frame rates and/or resolutions.\n\nThis tool includes a server and client module. By default, the client looks for the server on localhost. Communication is achieved using [gRPC](https://grpc.io/).\nThe server searches for duplicates of video files. Duplicates are determined by the following configurable settings:\n\n- Number of Images to compare =\u003e Defines how many images will be compared to determine a duplicate.\n- Accepted number of different Images =\u003e Defines how many of the compared images can be different to still qualify as a duplicate.\n- Accepted percentage of difference =\u003e Defines how different two images have to be to be considered as different images. 80% seems to be a good value.\n\nThe comparison algorithm for images is based on [ImageComparison by Jakop Farian Krarup](https://www.codeproject.com/Articles/374386/Simple-image-comparison-in-NET). Though the library isn't used directly anymore. The algorithm is the same.\n\nTo avoid comparing videos that differ too much in length, a maximum difference in length can be defined. Either as an absolute value in seconds or in percent.\n\nThe server will search for all video files (determined by the filename extension) in a specified folder. And provides the option to monitor the folder for file changes.\n\nThe duplicates can be resolved using the client. It will view details as well as a preview of both videos. The user can decide how the duplicate shall be resolved.\n\nVidepDedup is using the following tools and libraries:\n\n- [gRPC](https://grpc.io/)\n- [.NET 6](https://docs.microsoft.com/en-us/dotnet/core/whats-new/dotnet-6)\n- [libmpv](https://github.com/mpv-player/mpv)\n- [KGySoft Drawing](https://kgysoft.net/drawing)\n- [Newtonsoft.Json](https://www.newtonsoft.com/json)\n- [WindowsAPICodePack](https://github.com/contre/Windows-API-Code-Pack-1.1)\n- The amazing [FatCow IconPack](https://www.fatcow.com/free-icons)\n- [WiX Toolset](https://wixtoolset.org)\n\nlibmpv 0.33 was cross-compiled with LGPL flag from the \"release/0.33\" branch using MXE for x64 and x86 with:  \n\n    DEST_OS=win32 TARGET=x86_64-w64-mingw32.static ./waf configure --enable-libmpv-shared --disable-cplayer --enable-lgpl --disable-debug-build --disable-lua\nand:  \n\n    DEST_OS=win32 TARGET=i686-w64-mingw32.static ./waf configure --enable-libmpv-shared --disable-cplayer --enable-lgpl --disable-debug-build --disable-lua\nrespectively.  \nFor detailed configuration check [x64 libmpv_build_config](./DedupEngine/Libs/libmpv/x64/libmpv_build_config) and [x86 libmpv_build_config](./DedupEngine/Libs/libmpv/x86/libmpv_build_config) respectively.  \nFor information on how to build libmpv check out [mpv-players windows compilation guide](https://github.com/mpv-player/mpv/blob/master/DOCS/compile-windows.md).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsebastianbecker2%2Fvideodedup","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsebastianbecker2%2Fvideodedup","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsebastianbecker2%2Fvideodedup/lists"}