{"id":28228146,"url":"https://github.com/helloharendra/agora-video-calling-flutter","last_synced_at":"2025-06-12T17:31:31.630Z","repository":{"id":290991764,"uuid":"851257322","full_name":"helloharendra/Agora-Video-calling-Flutter","owner":"helloharendra","description":"Video call functionality using agora","archived":false,"fork":false,"pushed_at":"2025-05-01T18:23:05.000Z","size":278,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-18T14:09:29.455Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/helloharendra.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":"2024-09-02T18:25:16.000Z","updated_at":"2025-05-01T18:23:08.000Z","dependencies_parsed_at":"2025-05-01T19:32:23.860Z","dependency_job_id":"e7ffb775-2abd-4e8f-969f-261e84118952","html_url":"https://github.com/helloharendra/Agora-Video-calling-Flutter","commit_stats":null,"previous_names":["helloharendra/agora-video-calling-flutter"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/helloharendra/Agora-Video-calling-Flutter","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/helloharendra%2FAgora-Video-calling-Flutter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/helloharendra%2FAgora-Video-calling-Flutter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/helloharendra%2FAgora-Video-calling-Flutter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/helloharendra%2FAgora-Video-calling-Flutter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/helloharendra","download_url":"https://codeload.github.com/helloharendra/Agora-Video-calling-Flutter/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/helloharendra%2FAgora-Video-calling-Flutter/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259512123,"owners_count":22869348,"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":[],"created_at":"2025-05-18T14:09:29.417Z","updated_at":"2025-06-12T17:31:31.625Z","avatar_url":"https://github.com/helloharendra.png","language":"C++","funding_links":["https://www.buymeacoffee.com/helloharendra"],"categories":[],"sub_categories":[],"readme":"# 📹 Agora Video Calling - Flutter\n\n![Flutter](https://img.shields.io/badge/Flutter-3.13.9-blue)\n![Agora](https://img.shields.io/badge/Agora-4.2.1-red)\n![Platforms](https://img.shields.io/badge/Platforms-iOS%20|%20Android%20|%20Web-green)\n![License](https://img.shields.io/badge/license-MIT-brightgreen)\n\nA complete, production-ready video calling solution for Flutter using Agora SDK. Supports **1:1 calls, group meetings, screen sharing, and real-time messaging**.\n\n## ✨ Key Features\n\n- 🎥 **High-quality video calls** (720p/1080p)\n- 🎙️ **Crystal clear audio** with noise suppression\n- 👥 **Multi-user conferences** (up to 17 participants)\n- 🖥️ **Screen sharing** (Android/iOS/Web)\n- 🔒 **End-to-end encryption** for secure calls\n- 🌐 **Cross-platform** (iOS, Android, Web)\n- 💬 **In-call chat messaging**\n- 🎚️ **Device management** (camera/mic/speaker control)\n\n## 🎥 Demo\n\n\n\n\n## 🚀 Quick Setup\n\n### 1. Add Dependencies\n```yaml\ndependencies:\n  agora_rtc_engine: ^6.2.1\n  permission_handler: ^10.2.0\n  flutter_local_notifications: ^13.0.0\n```\n\n### 2. Platform Configuration\n\n**Android**:\n1. Add camera/microphone permissions to `AndroidManifest.xml`\n2. Enable Java 8 support in `build.gradle`\n\n**iOS**:\n1. Add `NSCameraUsageDescription` and `NSMicrophoneUsageDescription` to `Info.plist`\n2. Enable background modes for VoIP\n\n**Web**:\n1. Add CSP rules to `index.html`\n2. Configure CORS for your domain\n\n### 3. Initialize Agora Engine\n```dart\nfinal RtcEngine _engine = await RtcEngine.createWithContext(\n  RtcEngineContext(\n    APP_ID, // Your Agora App ID\n    channelProfile: ChannelProfile.LiveBroadcasting,\n  )\n);\n\nawait _engine.enableVideo();\nawait _engine.setClientRole(ClientRole.Broadcaster);\n```\n\n## 💻 Basic Implementation\n\n### Join Channel\n```dart\nawait _engine.joinChannel(\n  token: TEMP_TOKEN, // Use null for testing\n  channelId: 'test_channel',\n  uid: 0, // 0 = auto-assign UID\n  options: ChannelMediaOptions(),\n);\n```\n\n### Setup Video View\n```dart\n// Local view\nAgoraVideoView(\n  controller: VideoViewController(\n    rtcEngine: _engine,\n    canvas: VideoCanvas(uid: 0),\n  ),\n)\n\n// Remote view\nAgoraVideoView(\n  controller: VideoViewController.remote(\n    rtcEngine: _engine,\n    canvas: VideoCanvas(uid: remoteUid),\n    connection: RtcConnection(channelId: 'test_channel'),\n  ),\n)\n```\n\n## 🛠️ Advanced Features\n\n### Screen Sharing (Android/iOS)\n```dart\nawait _engine.startScreenCapture(\n  ScreenCaptureParameters(\n    captureAudio: true,\n    videoParams: ScreenVideoParameters(\n      dimensions: VideoDimensions(width: 1280, height: 720),\n      frameRate: 15,\n    ),\n  ),\n);\n```\n\n### In-Call Controls\n```dart\n// Toggle camera\nawait _engine.switchCamera();\n\n// Mute/unmute\nawait _engine.muteLocalAudioStream(true);\n\n// Speaker control\nawait _engine.setEnableSpeakerphone(true);\n```\n\n### Event Handling\n```dart\n_engine.setEventHandler(RtcEngineEventHandler(\n  joinChannelSuccess: (channel, uid, elapsed) {\n    // Handle join success\n  },\n  userJoined: (uid, elapsed) {\n    // Add remote video view\n  },\n  userOffline: (uid, reason) {\n    // Remove remote view\n  },\n));\n```\n\n## 🔐 Security Best Practices\n\n1. **Use Tokens** (not App ID alone) in production\n2. Implement token generation on your backend\n3. Enable encryption with `_engine.setEncryptionSecret()`\n4. Use role-based permissions\n\n\n\n## 📜 License\n\nMIT License - See [LICENSE](LICENSE) for details.\n\n---\n\n## 💼 Hire Me \u0026 Support My Work\n\n### 🤝 Available for Projects\nI'm open to **Flutter development**, **API integrations**, and **consulting work**.\n\n📱 **Phone/WhatsApp**: [+91 7991327022](https://wa.me/917991327022)  \n📧 **Email**: [harendraprajapati72@gmail.com](mailto:harendraprajapati72@gmail.com)  \n🌐 **Website**: [nayaproyog.com](https://nayaproyog.com)  \n💻 **Portfolio**: [github.helloharendra.io](https://github.helloharendra.io)  \n\n### ☕ Buy Me a Coffee\nIf you appreciate my work, consider supporting me:\n\n[![Buy Me A Coffee](https://img.shields.io/badge/Buy_Me_A_Coffee-FFDD00?style=for-the-badge\u0026logo=buy-me-a-coffee\u0026logoColor=black)](https://www.buymeacoffee.com/helloharendra)\n\n\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhelloharendra%2Fagora-video-calling-flutter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhelloharendra%2Fagora-video-calling-flutter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhelloharendra%2Fagora-video-calling-flutter/lists"}