{"id":15950096,"url":"https://github.com/membraneframework/membrane_smelter_plugin","last_synced_at":"2025-12-11T23:36:08.582Z","repository":{"id":46169257,"uuid":"515144250","full_name":"membraneframework/membrane_smelter_plugin","owner":"membraneframework","description":"Membrane plugin for video and audio mixing/compositing","archived":false,"fork":false,"pushed_at":"2025-12-02T13:00:29.000Z","size":23896,"stargazers_count":22,"open_issues_count":1,"forks_count":2,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-12-05T08:15:15.031Z","etag":null,"topics":["elixir","membrane","membrane-framework","video","video-processing"],"latest_commit_sha":null,"homepage":"https://smelter.dev","language":"Elixir","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/membraneframework.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,"zenodo":null}},"created_at":"2022-07-18T10:51:41.000Z","updated_at":"2025-12-02T13:00:11.000Z","dependencies_parsed_at":"2023-11-15T17:42:20.625Z","dependency_job_id":"f996bc7b-d2fe-431b-ace2-8af58cdce3c6","html_url":"https://github.com/membraneframework/membrane_smelter_plugin","commit_stats":{"total_commits":605,"total_committers":12,"mean_commits":"50.416666666666664","dds":0.6413223140495867,"last_synced_commit":"a57d360e97692267f4a8d6b00d509e07e6a1f80b"},"previous_names":["membraneframework/membrane_live_compositor_plugin","membraneframework/membrane_smelter_plugin"],"tags_count":24,"template":false,"template_full_name":null,"purl":"pkg:github/membraneframework/membrane_smelter_plugin","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/membraneframework%2Fmembrane_smelter_plugin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/membraneframework%2Fmembrane_smelter_plugin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/membraneframework%2Fmembrane_smelter_plugin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/membraneframework%2Fmembrane_smelter_plugin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/membraneframework","download_url":"https://codeload.github.com/membraneframework/membrane_smelter_plugin/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/membraneframework%2Fmembrane_smelter_plugin/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":27672150,"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-12-11T02:00:11.302Z","response_time":56,"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":["elixir","membrane","membrane-framework","video","video-processing"],"created_at":"2024-10-07T12:58:01.986Z","updated_at":"2025-12-11T23:36:08.575Z","avatar_url":"https://github.com/membraneframework.png","language":"Elixir","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Membrane Smelter Plugin\n\n[![Hex.pm](https://img.shields.io/hexpm/v/membrane_smelter_plugin.svg)](https://hex.pm/packages/membrane_smelter_plugin)\n[![API Docs](https://img.shields.io/badge/api-docs-yellow.svg?style=flat)](https://hexdocs.pm/membrane_smelter_plugin)\n[![CircleCI](https://dl.circleci.com/status-badge/img/gh/membraneframework/membrane_smelter_plugin/tree/master.svg?style=svg)](https://dl.circleci.com/status-badge/redirect/gh/membraneframework/membrane_smelter_plugin/tree/master)\n\nMembrane SDK for [Smelter](https://smelter.dev), that takes multiple input streams, transforms them according to provided transformations and composes them into output streams / videos.\n\nIt is part of [Membrane Multimedia Framework](https://membrane.stream).\n\n## Installation\n\nThe package can be installed by adding `membrane_smelter_plugin` to your list of dependencies in `mix.exs`:\n\n```elixir\ndef deps do\n  [\n    {:membrane_smelter_plugin, \"~\u003e 0.12.0\"}\n  ]\nend\n```\n\nSmelter requires having locally installed:\n\n- [FFmpeg 6.0](https://ffmpeg.org/download.html) - for streaming inputs / outputs to Smelter\n- [wget](https://www.gnu.org/software/wget/) - for downloading Smelter binary file\n- [tar](https://www.gnu.org/software/tar/) - for decompressing Smelter binary file\n\n## Examples\n\nExamples can be found in `examples` directory.\n\nTo run example run:\n\n1. `cd examples`\n2. `mix deps.get`\n3. `mix run lib/[example_name].exs`\n\n### Layout with shader example\n\nThe example presents dynamically added video arranged onto a tiled layout and \"twisted\" with the simple shader. Shaders can be used to create custom visual effects.\n\n### Transition example\n\nThe example presents dynamic transition of input videos. Transitions are used for smooth, dynamical animations.\n\n### Dynamic outputs example\n\nThe example presents dynamic outputs linking.\nMultiple outputs are useful for live-streaming for multiple platforms (e.g. different layout for mobile devices), target resolutions\nor any other case, when user want to process input videos differently.\n\n### Offline processing example\n\nExample of processing that does not need to be real time. Multiple offline sources (mp4 files) are composed together and\nproduce output mp4 file. To simplify the example the same input file is read multiple times as a separate inputs. Depending\non hardware capabilities this example can run faster or slower than real time.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmembraneframework%2Fmembrane_smelter_plugin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmembraneframework%2Fmembrane_smelter_plugin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmembraneframework%2Fmembrane_smelter_plugin/lists"}