{"id":19699508,"url":"https://github.com/tqk2811/ffmpegargs","last_synced_at":"2025-10-01T01:31:17.785Z","repository":{"id":44429254,"uuid":"423088624","full_name":"tqk2811/FFmpegArgs","owner":"tqk2811","description":"Generate arguments for ffmpeg executable","archived":false,"fork":false,"pushed_at":"2024-05-11T10:41:14.000Z","size":5308,"stargazers_count":27,"open_issues_count":0,"forks_count":5,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-05-15T20:54:01.428Z","etag":null,"topics":["ffmpeg","ffmpeg-cli-wrapper"],"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/tqk2811.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-10-31T08:05:12.000Z","updated_at":"2024-07-16T16:04:10.100Z","dependencies_parsed_at":"2024-01-16T16:05:26.773Z","dependency_job_id":"c02c4a13-6aaf-4cdd-a855-0720e9bdd30a","html_url":"https://github.com/tqk2811/FFmpegArgs","commit_stats":{"total_commits":247,"total_committers":1,"mean_commits":247.0,"dds":0.0,"last_synced_commit":"bf9c2205b21e1e84a7e2b29fc37fb8762e569d38"},"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tqk2811%2FFFmpegArgs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tqk2811%2FFFmpegArgs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tqk2811%2FFFmpegArgs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tqk2811%2FFFmpegArgs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tqk2811","download_url":"https://codeload.github.com/tqk2811/FFmpegArgs/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":234808942,"owners_count":18890088,"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":["ffmpeg","ffmpeg-cli-wrapper"],"created_at":"2024-11-11T21:00:48.666Z","updated_at":"2025-10-01T01:31:17.779Z","avatar_url":"https://github.com/tqk2811.png","language":"C#","readme":"# FFmpegArgs\n**FFmpegArgs** is a cli-wrapper library support generate argument for ffmpeg executable.  \nThe standout feature that many cli-wrapper libraries don't have is the **FFmpeg FilterGraph** system.\n\nGet it on [NuGet Package](https://www.nuget.org/packages?q=FFmpegArgs)  \n________________________________________  \n- Support file/url/pipe in/output.\n- Works on most systems - if ffmpeg can execution.\n- 130+ filters, add more in future \n- 380+ filters auto-generate\n\n# Example\n``` Csharp\nFFmpegArg ffmpegArg = new FFmpegArg()\n    .OverWriteOutput();//global extension\n\nvar green_video = ffmpegArg.AddVideoInput(\n        new VideoFileInput(@\"chromakey.mp4\")\n            .SsPosition(TimeSpan.FromSeconds(0.5))//input extension ( -ss )\n            .AndSet(\n                x =\u003e x.ImageInputAVStream//input video stream\n                    .R(24)//input, video, per-stream extension ( -r )\n            )\n    );\nvar background_videoMap = ffmpegArg.AddVideoInput(new VideoFileInput(@\"background.mp4\")\n    .SsPosition(TimeSpan.FromSeconds(1))\n    .ToPosition(TimeSpan.FromSeconds(10)));\n\nvar image_maps = green_video.ImageMaps.First()\n    .ColorKeyFilter()//ColorKey Filter\n        .Color(Color.FromArgb(101, 220, 8))\n        .Similarity(0.25f)\n        .Enable(\"between(t,0,10)\").MapOut//Filter had ITimelineSupport\n    .ScaleFilter().W(\"iw/3\").H(\"ih/3\").MapOut//Scale Filter\n    .SplitFilter(2).MapsOut;//Split Filter\n\nvar overlay_map = image_maps.First()\n    //overlay color_key on-center background_video\n    .OverlayFilterOn(background_videoMap.ImageMaps.First()).X(\"(W-w)/2\").Y(\"(H-h)/2\").MapOut;\n\nffmpegArg.AddOutput(\n    new VideoFileOutput(@\"out.mp4\", overlay_map, background_videoMap.AudioMaps.First())\n    .T(TimeSpan.FromSeconds(5))//output extension ( -t )\n    .AndSet(\n        x =\u003e x.ImageOutputAVStream//output video stream\n            .R(24)//output, video, per-stream extension ( -r )\n        )\n    );\nffmpegArg.AddOutput(\n    new VideoFileOutput(@\"out2.mp4\", image_maps.Last(), background_videoMap.AudioMaps.First())\n    .AndSet(x =\u003e x.ImageOutputAVStream.R(30)));\n\nvar renderResult = ffmpegArg\n    .Render(c =\u003e c\n        .WithFFmpegBinaryPath(\"path to ffmpeg\")//or default ffmpeg from PATH\n        .WithWorkingDirectory(\"path to working folder\")//or default Directory.GetCurrentDirectory()\n    )\n    .Execute();\n```\nFor more example, see `FFmpegArgs.Test`  \n\n----------------------------------------\n+ Option/Flag not found?  \n\nWe can extend for `FFmpegArg`, `Filter`, `Input`, `Output`, `AVStream` by extension.  \n\n`.SetOption(\"your option\",\"option value\")`  \n`.SetOptionRange(\"your option\", val, min, max)`  \n`.SetFlag(\"your flag\")`  \n\n+ Filter not found?  \n\nWe can write new Filter class, so much example in `FFmpegArgs.Filters`  \n\nPull request or request missing feature are welcome.\n\n----------------------------------------\nRecommend namespace \n```csharp\nusing FFmpegArgs;\nusing FFmpegArgs.Cores;\nusing FFmpegArgs.Cores.Enums;\nusing FFmpegArgs.Cores.Exceptions;\nusing FFmpegArgs.Cores.Inputs;\nusing FFmpegArgs.Cores.Filters;\nusing FFmpegArgs.Cores.Interfaces;\nusing FFmpegArgs.Cores.Maps;\nusing FFmpegArgs.Cores.Streams;\n\nusing FFmpegArgs.Filters;\nusing FFmpegArgs.Filters.Exceptions;\nusing FFmpegArgs.Filters.Attributes;\nusing FFmpegArgs.Filters.Expressions;\n\nusing FFmpegArgs.Filters.AudioFilters;\nusing FFmpegArgs.Filters.VideoFilters;\nusing FFmpegArgs.Filters.Multimedia;\nusing FFmpegArgs.Filters.VideoSources;\nusing FFmpegArgs.Filters.AudioSources;\n//using FFmpegArgs.Filters.Generated;\n\nusing FFmpegArgs.Executes;\nusing FFmpegArgs.Inputs;\nusing FFmpegArgs.Outputs;\n\n```\n________________________________________\n\n# LICENCE  \nMIT\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftqk2811%2Fffmpegargs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftqk2811%2Fffmpegargs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftqk2811%2Fffmpegargs/lists"}