{"id":19337275,"url":"https://github.com/infobip/infobip-rtc-extensions-js","last_synced_at":"2026-02-11T23:41:25.389Z","repository":{"id":65525002,"uuid":"549474068","full_name":"infobip/infobip-rtc-extensions-js","owner":"infobip","description":"Quick Start Guide docs for our RTC JS Extensions","archived":false,"fork":false,"pushed_at":"2024-10-21T08:53:10.000Z","size":14,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":11,"default_branch":"master","last_synced_at":"2025-10-08T17:04:46.087Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/infobip.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-10-11T08:36:54.000Z","updated_at":"2024-09-30T12:30:10.000Z","dependencies_parsed_at":"2024-05-20T14:18:46.901Z","dependency_job_id":"94fdad17-e495-4484-9794-cc60d2209d8c","html_url":"https://github.com/infobip/infobip-rtc-extensions-js","commit_stats":{"total_commits":8,"total_committers":4,"mean_commits":2.0,"dds":0.375,"last_synced_commit":"30b33b6ecebf11df85ad6ad886939ed83d9675af"},"previous_names":[],"tags_count":25,"template":false,"template_full_name":null,"purl":"pkg:github/infobip/infobip-rtc-extensions-js","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/infobip%2Finfobip-rtc-extensions-js","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/infobip%2Finfobip-rtc-extensions-js/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/infobip%2Finfobip-rtc-extensions-js/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/infobip%2Finfobip-rtc-extensions-js/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/infobip","download_url":"https://codeload.github.com/infobip/infobip-rtc-extensions-js/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/infobip%2Finfobip-rtc-extensions-js/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29349640,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-11T20:11:40.865Z","status":"ssl_error","status_checked_at":"2026-02-11T20:10:41.637Z","response_time":97,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":[],"created_at":"2024-11-10T03:13:54.505Z","updated_at":"2026-02-11T23:41:25.373Z","avatar_url":"https://github.com/infobip.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"## Introduction\n\nInfobip RTC extensions is a JavaScript library which provides extended functionality to Infobip RTC SDK.\n\nCurrently available functionalities are:\n\n- audio filter implementations\n- video filter implementations\n\nHere you will find an overview, and a quick guide on how to include and use these extensions in your application.\nThere is also in-depth reference documentation available.\n\n## Prerequisites\n\nInfobip RTC Extensions requires ES6.\n\n## Getting the library\n\nThere are a few ways in which you can get our library. We publish it as an NPM package and as a standalone JS file\nhosted on a CDN.\n\nIf you want to add it as an NPM dependency, run the following:\n\n```bash\nnpm install infobip-rtc-extensions --save\n```\n\nAfter which you would use it in your project like this:\n\n```javascript\nlet infobipRtcExtensions = require('infobip-rtc-extensions');\n```\n\nor as ES6 import:\n\n```javascript\nimport {RTCVideoFilter} from \"infobip-rtc-extensions\"\n```\n\nYou can include our distribution file in your JavaScript from our CDN:\n\n```html\n\u003cscript src=\"//rtc.cdn.infobip.com/1.1.0/infobip.rtc.extensions.js\"\u003e\u003c/script\u003e\n```\n\nThe latest tag is also available:\n\n```html\n\u003cscript src=\"//rtc.cdn.infobip.com/latest/infobip.rtc.extensions.js\"\u003e\u003c/script\u003e\n```\n\n## Audio filters\n\nThe Infobip RTC supports user-defined audio filters which manipulate outgoing audio streams during a call. This library\nimplements several audio filters which are easy to configure and use.\n\nFilters which are currently available are:\n\n- [`BackgroundMusicAudioFilter`](#background-music-audio-filter)\n- [`NoiseSuppressionFilter`](#noise-suppression-filter)\n\n\u003ca name=\"background-music-audio-filter\"\u003e\u003c/a\u003e\n\n### BackgroundMusicAudioFilter\n\n`BackgroundMusicAudioFilter` allows the user to specify audio to be played alongside their outgoing stream. This audio\nis heard by other participants of the call, but not by the user.\n\nTo use this filter, an instance of\n[`BackgroundMusicAudioFilter`](https://github.com/infobip/infobip-rtc-extensions-js/wiki/BackgroundMusicAudioFilter)\nneeds to be created. The only parameter of the class constructor is a string containing the URL of the audio file which\nis to be combined with the user's outgoing stream. The audio file loops until the filter is turned off or the call is\nterminated.\n\n```javascript\nconst musicURL = \"path/to/desired/audio.mp3\";\nconst backgroundMusicFilter = new BackgroundMusicAudioFilter(musicURL);\n```\n\n\u003ca name=\"noise-suppression-filter\"\u003e\u003c/a\u003e\n\n### NoiseSuppressionFilter\n\nThe `NoiseSuppressionFilter` enhances speech by removing several types of background noise. This filter works in\nreal-time. Currently, it is focused on removing background noises commonly encountered in call centers, such as babble,\nnoise produced by different devices (e.g. air conditioner) and keyboard typing sounds. However, it performs well on a\nwider range of noise types. It is also independent of the language spoken.\n\nTo use the noise suppression filter, an instance of the class\n[`NoiseSuppressionFilter`](https://github.com/infobip/infobip-rtc-extensions-js/wiki/NoiseSuppressionFilter) needs to be\ncreated. This can be done using the [`NoiseSuppressionFilter.create()`](https://github.com/infobip/infobip-rtc-extensions-js/wiki/NoiseSuppressionFilter#create)\nfunction. \n\nReal-time noise suppression is a hardware-intensive process, so not all hardware will be able to sustain it. In case of\ninsufficient performance, the filter is automatically disabled in order to not interfere with the call.\n\n```javascript\nconst noiseSupressionFilter = await NoiseSuppressionFilter.create();\n```\n\nDuring initialisation, the created audio filter instance allocates resources which should be manually released once\nyou are certain you won't need this filter instance anymore.\n```javascript\n// load the filter\nconst noiseSupressionFilter = await NoiseSuppressionFilter.create();\n\n// start using it\nactiveCall.setAudioFilter(noiseSupressionFilter);\n\n// at the end of the call\nawait noiseSupressionFilter.release();\n```\n\n## Video filters\n\nThe Infobip RTC supports user-defined video filters capable of manipulating outgoing video streams during calls. The\nlibrary provides an extensive implementation of commonly used video filters, making configuration easier and enabling\nseamless integration.\n\nCurrently available implementations are:\n\n- [`RTCVideoFilter`](#rtc-video-filer)\n\n\u003ca name=\"rtc-video-filer\"\u003e\u003c/a\u003e\n\n### RTCVideoFilter\n\nThis filter allows users to modify their background during video calls.\n\nSupported video filter modes include:\n\n- Virtual background\n  ([`RTCVideoFilterMode.VIRTUAL_BACKGROUND`](https://github.com/infobip/infobip-rtc-extensions-js/wiki/RTCVideoFilterMode#virtual-background)) -\n  Users can set a custom image to be displayed as their background\n- Background blur\n  ([`RTCVideoFilterMode.BACKGROUND_BLUR`](https://github.com/infobip/infobip-rtc-extensions-js/wiki/RTCVideoFilterMode#background-blur)) -\n  Users can blur their background.\n- Face track\n  ([`RTCVideoFilterMode.FACE_TRACK`](https://github.com/infobip/infobip-rtc-extensions-js/wiki/RTCVideoFilterMode#face-track)) -\n  Automatically adjusts the video to keep the user's face centered and properly framed within the view.\n- None ([`RTCVideoFilterMode.NONE`](https://github.com/infobip/infobip-rtc-extensions-js/wiki/RTCVideoFilterMode#none)) -\n  No video filtering is applied; video frames are passed through unchanged. This option is recommended over repeatedly\n  reallocating video filter resources to avoid visible disruptions.\n\nTo utilize this feature, begin by creating an instance of\nthe [`RTCVideoFilter`](https://github.com/infobip/infobip-rtc-extensions-js/wiki/RTCVideoFilter)\nobject. The constructor accepts optional\n[`RTCVideoFilterOptions`](https://github.com/infobip/infobip-rtc-extensions-js/wiki/RTCVideoFilterOptions)\nfor customization.\n\n```javascript\nconst options = {\n    mode: RTCVideoFilterMode.VIRTUAL_BACKGROUND,\n    image: sourceImage // can be an instance of ImageBitmap, ImageData, HTMLImageElement, …\n};\nconst videoFilter = new RTCVideoFilter(options);\n```\n\nFor optimal performance, it's recommended to avoid reallocating video filter instances solely for mode changes. Instead,\npass the new options directly to the existing video filter instance. This approach minimizes resource overhead and\nenhances overall efficiency.\n\n```javascript\nconst options = {\n    mode: RTCVideoFilterMode.NONE\n};\nawait videoFilter.setOptions(options);\n``` \n\n### Applying the video filter\n\nOnce you've created the video filter, you can utilize it during calls.\n\nYou can set it beforehand when initiating a\nnew [`ApplicationCall`](https://github.com/infobip/infobip-rtc-js/wiki/ApplicationCall)\nusing [`VideoOptions`](https://github.com/infobip/infobip-rtc-js/wiki/VideoOptions) object within\nthe [`ApplicationCallOptions`](https://github.com/infobip/infobip-rtc-js/wiki/ApplicationCallOptions) object:\n\n```javascript\nlet token = obtainToken();\nlet infobipRTC = new InfobipRTC(token);\ninfobipRTC.connect();\n\nlet videoOptions = VideoOptions.builder().setVideoFilter(videoFilter).build();\nlet applicationCallOptions = ApplicationCallOptions.builder().setVideo(true).setVideoOptions(videoOptions).build();\nlet applicationCall = infobipRTC.callApplication('45g2gql9ay4a2blu55uk1628', applicationCallOptions);\n```\n\nAlternatively, you can apply the filter to the\nexisting [`ApplicationCall`](https://github.com/infobip/infobip-rtc-js/wiki/ApplicationCall) using the\n[`setVideoFilter`](https://github.com/infobip/infobip-rtc-js/wiki/ApplicationCall#set-video-filter) method:\n\n```javascript\nawait applicationCall.setVideoFilter(videoFilter);\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finfobip%2Finfobip-rtc-extensions-js","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Finfobip%2Finfobip-rtc-extensions-js","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finfobip%2Finfobip-rtc-extensions-js/lists"}