{"id":13449192,"url":"https://github.com/flutterjanus/flutter_janus_client","last_synced_at":"2025-03-22T22:32:19.414Z","repository":{"id":39801858,"uuid":"278913598","full_name":"flutterjanus/flutter_janus_client","owner":"flutterjanus","description":"A plugin that allows the flutter app to communicate with a Janus server using different transport mechanisms, such as WebSocket and HTTP(rest). It features a developer-friendly api to interact with various WebRTC Janus Plugins. Hence, it can be considered as a swiss-knife for WebRTC solutions.","archived":false,"fork":false,"pushed_at":"2024-05-30T10:51:51.000Z","size":19984,"stargazers_count":131,"open_issues_count":4,"forks_count":76,"subscribers_count":15,"default_branch":"master","last_synced_at":"2024-08-01T06:21:17.518Z","etag":null,"topics":["audiocall","chat","datachannel","flutter","flutter-apps","janus-gateway","rest","screen-capture","sip","streaming","videocall","videoconferencing","videoroom","webrtc","websocket"],"latest_commit_sha":null,"homepage":"","language":"Dart","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/flutterjanus.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","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},"funding":{"github":"shivanshtalwar0","ko_fi":"shivanshtalwar0"}},"created_at":"2020-07-11T17:50:58.000Z","updated_at":"2024-07-20T20:19:04.000Z","dependencies_parsed_at":"2023-02-06T03:16:29.840Z","dependency_job_id":"8e29da0c-d247-4379-9b79-836d2c97ecf9","html_url":"https://github.com/flutterjanus/flutter_janus_client","commit_stats":null,"previous_names":[],"tags_count":18,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flutterjanus%2Fflutter_janus_client","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flutterjanus%2Fflutter_janus_client/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flutterjanus%2Fflutter_janus_client/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flutterjanus%2Fflutter_janus_client/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/flutterjanus","download_url":"https://codeload.github.com/flutterjanus/flutter_janus_client/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":221840609,"owners_count":16889827,"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":["audiocall","chat","datachannel","flutter","flutter-apps","janus-gateway","rest","screen-capture","sip","streaming","videocall","videoconferencing","videoroom","webrtc","websocket"],"created_at":"2024-07-31T06:00:33.062Z","updated_at":"2024-10-28T14:30:26.299Z","avatar_url":"https://github.com/flutterjanus.png","language":"Dart","funding_links":["https://github.com/sponsors/shivanshtalwar0","https://ko-fi.com/shivanshtalwar0","https://ko-fi.com/U7U11OZL8","https://www.buymeacoffee.com/gr20hjk"],"categories":["Uncategorized","Dart"],"sub_categories":["Uncategorized"],"readme":"\n\n\n\n\n# janus_client \n[![januscaler](https://img.shields.io/badge/powered_by-JanuScaler-b?style=for-the-badge\u0026logo=Januscaler\u0026logoColor=%238884ED\u0026label=Powered%20By\u0026labelColor=white\u0026color=%238884ED)](https://januscaler.com)  \n\n[![pub package](https://img.shields.io/pub/v/janus_client.svg)](https://pub.dartlang.org/packages/janus_client)[![Gitter](https://badges.gitter.im/flutter_janus_client/Lobby.svg)](https://gitter.im/flutter_janus_client/Lobby?utm_source=badge\u0026utm_medium=badge\u0026utm_campaign=pr-badge)\n\u003c!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section --\u003e\n[![All Contributors](https://img.shields.io/badge/all_contributors-13-orange.svg?style=flat-square)](#contributors-)\n\u003c!-- ALL-CONTRIBUTORS-BADGE:END --\u003e\n\nIt is a feature rich flutter package, which offers all webrtc operations supported by [Janus: the general purpose WebRTC server](https://janus.conf.meetecho.com/),\nit easily integrates into your flutter application and allows you to build webrtc features and functionality with clean and maintainable code.\n\n\u003e [!NOTE]\n\u003e ## What it will do?\n\u003e - It will help you in establishing communication with Janus server using either REST or Websocket depending on what you prefer \n\u003e - It will provide you meaningful APIs for individual plugins so you can express your app logic without worrying about internals\n\u003e ## What it will not do?\n\u003e It will not manage every aspect of WebRTC for you by that we mean we only provide core functionalities and features when it comes to WebRTC, since this library uses flutter_webrtc for managing all of webrtc stack so you will need to refer its documentation when there's some use cases which we do not cover or does not exist in examples. This is done intentionally by design to give developers complete flexibility while also making sure library is lightweight and does not become a bloatware.\nA classic example of that would be changing output device on a native device for example you want to switch from speaker to headsets or bluetooth audio device you will need to use `flutter_webrtc`'s `Helper` utility class:-   \n\u003e```dart \n\u003eHelper.selectAudioOutput(deviceIdOfBluetoothDevice) \n\u003e``` \n\n\n## [Demo of JanusClient](https://flutterjanus.github.io/flutter_janus_client/)\n\n## [APIReference](https://flutterjanus.github.io/flutter_janus_client/doc/api/)\n\n## [Wiki](https://github.com/flutterjanus/flutter_janus_client/wiki)\n\n## [Take away apple specific pain for building flutter app](https://github.com/flutterjanus/flutter_janus_client/wiki/Take-away-Apple-IOS-and-macOS-related-pain-from-me-%F0%9F%92%AF-(building-for-apple))\n\n## [screen share example](https://github.com/flutterjanus/screenshare_example)\n\n## News \u0026 Updates\n- Introduced support for simulcast\n- videoroom and screenshare improvements (screenshare tested on android and chrome)\n- sip plugin wrapper added with sip calling example\n- Added errorHandler for typedMessage Stream for better development flow\n- Just like new flutter version comes With desktop support out of the box\n- All major plugins fully support unified plan\n- Typed examples updated with null safety and latest dart constraints\n- Introduced plugin specific wrapper classes with respective operation methods for rich development experience\n- Introduced typed events (Class Based Events) for brilliant auto completion support for IDE\n- Supports null-safety\n\n## Feature Status\n| Feature           | Support | Well Tested | Unified Plan | Example |\n|-------------------|---------|-------------|--------------|---------|\n| WebSocket         | Yes     | Yes         | -            | Yes     |\n| Rest/Http API     | Yes     | Yes         | -            | Yes     |\n| Video Room Plugin | Yes     | No         | Yes          | Yes     |\n| Video Call Plugin | Yes     | No          | Yes          | Yes     |\n| Streaming Plugin  | Yes     | No          | Yes          | Yes     |\n| Audio Room Plugin | Yes     | No          | Yes          | Yes     |\n| Sip Plugin        | Yes     | No          | Yes           | Yes      |\n| Text Room Plugin  | Yes     | No          | -          | Yes     |\n| ScreenSharing using VideoRoom plugin  | Yes     | No          | Yes          | Yes     |\n\n## Platform Support Table\n| Platform           | Support | Well Tested|\n|-------------------|---------|-------------|\n| Browser(Web)      | Yes     | Yes         |\n| MacOs             | Yes     | No          |\n| Android           | Yes     | Yes         | \n| Ios               | Yes     | No          | \n| Linux             | Yes     | No          | \n| Windows           | Yes     | No          | \n\n\n## Todo\n- Documentation of some remaining plugins\n- Polishing of examples\n- Unit Test cases for all plugins\n\n## Deprecated Api v1(0.0.x)\nIf by any chance you are looking for (although you shouldn't) old api then you can switch to v1 branch,\nas it is very unstable and hard to maintain it was deprecated and will not recieve any fixes or feature updates.\nIt is highly recommended you migrate your code to latest version that is 2.X.X (stable)\n\n## Contributors ✨\n\nThanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section --\u003e\n\u003c!-- prettier-ignore-start --\u003e\n\u003c!-- markdownlint-disable --\u003e\n\u003ctable\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/shivanshtalwar0\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/26632663?v=4?s=100\" width=\"100px;\" alt=\"Shivansh Talwar\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eShivansh Talwar\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/flutterjanus/flutter_janus_client/commits?author=shivanshtalwar0\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/flutterjanus/flutter_janus_client/commits?author=shivanshtalwar0\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/kzawadi\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/12481289?v=4?s=100\" width=\"100px;\" alt=\"Kelvin Zawadi\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eKelvin Zawadi\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/flutterjanus/flutter_janus_client/commits?author=kzawadi\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/LifeNow\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/18676202?v=4?s=100\" width=\"100px;\" alt=\"Eugene\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eEugene\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/flutterjanus/flutter_janus_client/commits?author=LifeNow\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/igala\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/454390?v=4?s=100\" width=\"100px;\" alt=\"Igal Avraham\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eIgal Avraham\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/flutterjanus/flutter_janus_client/commits?author=igala\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"http://vigikaran.me/\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/9039584?v=4?s=100\" width=\"100px;\" alt=\"Vigikaran\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eVigikaran\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/flutterjanus/flutter_janus_client/commits?author=vigikaran\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/UserSense\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/65860664?v=4?s=100\" width=\"100px;\" alt=\"UserSense\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eUserSense\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/flutterjanus/flutter_janus_client/commits?author=UserSense\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/baihua666\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/5125983?v=4?s=100\" width=\"100px;\" alt=\"baihua666\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003ebaihua666\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/flutterjanus/flutter_janus_client/issues?q=author%3Abaihua666\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/ngoluuduythai\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/12238262?v=4?s=100\" width=\"100px;\" alt=\"ngoluuduythai\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003engoluuduythai\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/flutterjanus/flutter_janus_client/commits?author=ngoluuduythai\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://www.facebook.com/sakshamgupta12\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/14076514?v=4?s=100\" width=\"100px;\" alt=\"Saksham Gupta\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eSaksham Gupta\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/flutterjanus/flutter_janus_client/commits?author=sakshamgupta05\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/chu06\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/129312223?v=4?s=100\" width=\"100px;\" alt=\"chu06\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003echu06\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/flutterjanus/flutter_janus_client/commits?author=chu06\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/musagil\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/7420090?v=4?s=100\" width=\"100px;\" alt=\"Musagil Musabayli\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eMusagil Musabayli\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/flutterjanus/flutter_janus_client/commits?author=musagil\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/mazen930\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/33043493?v=4?s=100\" width=\"100px;\" alt=\"Mazen Amr\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eMazen Amr\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/flutterjanus/flutter_janus_client/commits?author=mazen930\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/Clon1998\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/10357775?v=4?s=100\" width=\"100px;\" alt=\"Patrick Schmidt\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003ePatrick Schmidt\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/flutterjanus/flutter_janus_client/commits?author=Clon1998\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\n\u003c!-- markdownlint-restore --\u003e\n\u003c!-- prettier-ignore-end --\u003e\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:END --\u003e\n\nThis project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!\n\n## Wait there's more... The Javascript Client!\nIf you loved the api style and architecture of flutter_janus_client and you wishing to have something similar for your next javascript project involving webrtc features.\nthen worry not because we have got you covered. we have written wrapper on top of our good old `janus.js`, you might ask why? well the answer to that question is it does not support\ntype bindings hence no rich ide support, so we proudly presents [typed_janus_js(feature rich promisified and reactive wrapper on top of janus.js)](https://github.com/flutterjanus/JanusJs)\nor you can straight away use it by installing from npm `npm i typed_janus_js`.\n\n## Donations \n[![ko-fi](https://www.ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/U7U11OZL8)  \n\n\u003ca href=\"https://www.buymeacoffee.com/gr20hjk\" target=\"_blank\"\u003e\u003cimg src=\"https://cdn.buymeacoffee.com/buttons/default-orange.png\" alt=\"Buy Me A Coffee\" style=\"height: 51px !important;width: 217px !important;\" \u003e\u003c/a\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflutterjanus%2Fflutter_janus_client","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fflutterjanus%2Fflutter_janus_client","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflutterjanus%2Fflutter_janus_client/lists"}