{"id":18498024,"url":"https://github.com/apivideo/api.video-android-live-stream","last_synced_at":"2025-04-09T22:19:21.611Z","repository":{"id":42451046,"uuid":"358516043","full_name":"apivideo/api.video-android-live-stream","owner":"apivideo","description":"Android RTMP live stream client. Made with ♥ by api.video","archived":false,"fork":false,"pushed_at":"2025-01-24T14:08:54.000Z","size":1031,"stargazers_count":51,"open_issues_count":2,"forks_count":6,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-04-02T20:09:48.553Z","etag":null,"topics":["android","kotlin","live-streaming","live-streaming-videos","rtmp","video"],"latest_commit_sha":null,"homepage":"https://api.video","language":"Kotlin","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/apivideo.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","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-04-16T07:38:08.000Z","updated_at":"2025-02-25T09:23:02.000Z","dependencies_parsed_at":"2023-10-15T03:28:38.925Z","dependency_job_id":"589fef51-d6c1-4279-9ce3-eb0bc7f68a36","html_url":"https://github.com/apivideo/api.video-android-live-stream","commit_stats":null,"previous_names":["apivideo/android-livestream"],"tags_count":26,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apivideo%2Fapi.video-android-live-stream","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apivideo%2Fapi.video-android-live-stream/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apivideo%2Fapi.video-android-live-stream/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apivideo%2Fapi.video-android-live-stream/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/apivideo","download_url":"https://codeload.github.com/apivideo/api.video-android-live-stream/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248119473,"owners_count":21050777,"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":["android","kotlin","live-streaming","live-streaming-videos","rtmp","video"],"created_at":"2024-11-06T13:37:11.025Z","updated_at":"2025-04-09T22:19:21.590Z","avatar_url":"https://github.com/apivideo.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!--\u003cdocumentation_excluded\u003e--\u003e\n[![badge](https://img.shields.io/twitter/follow/api_video?style=social)](https://twitter.com/intent/follow?screen_name=api_video)\n\u0026nbsp; [![badge](https://img.shields.io/github/stars/apivideo/api.video-android-live-stream?style=social)](https://github.com/apivideo/api.video-android-live-stream)\n\u0026nbsp; [![badge](https://img.shields.io/discourse/topics?server=https%3A%2F%2Fcommunity.api.video)](https://community.api.video)\n![](https://github.com/apivideo/.github/blob/main/assets/apivideo_banner.png)\n\u003ch1 align=\"center\"\u003eAndroid RTMP live stream client\u003c/h1\u003e\n\n[api.video](https://api.video) is the video infrastructure for product builders. Lightning fast\nvideo APIs for integrating, scaling, and managing on-demand \u0026 low latency live streaming features in\nyour app.\n\n## Table of contents\n\n- [Table of contents](#table-of-contents)\n- [Project description](#project-description)\n- [Getting started](#getting-started)\n  - [Installation](#installation)\n    - [Gradle](#gradle)\n  - [Permissions](#permissions)\n  - [Code sample](#code-sample)\n- [Tips](#tips)\n- [Documentation](#documentation)\n- [Dependencies](#dependencies)\n- [Sample application](#sample-application)\n- [FAQ](#faq)\n\n\u003c!--\u003c/documentation_excluded\u003e--\u003e\n\u003c!--\u003cdocumentation_only\u003e\n---\ntitle: Android live stream module\nmeta: \n  description: The official Android live stream module for api.video. [api.video](https://api.video/) is the video infrastructure for product builders. Lightning fast video APIs for integrating, scaling, and managing on-demand \u0026 low latency live streaming features in your app.\n---\n\n# api.video Android Live stream module\n\n[api.video](https://api.video/) is the video infrastructure for product builders. Lightning fast video APIs for integrating, scaling, and managing on-demand \u0026 low latency live streaming features in your app.\n\n\u003c/documentation_only\u003e--\u003e\n## Project description\n\nThis library is an easy way to broadcast livestream to api.video platform on Android.\n\n## Getting started\n\n### Installation\n\n#### Gradle\n\nOn build.gradle add the following code in dependencies:\n\n```groovy\ndependencies {\n    implementation 'video.api:android-live-stream:1.4.3'\n}\n```\n\n### Permissions\n\n```xml\n\n\u003cmanifest\u003e\n    \u003cuses-permission android:name=\"android.permission.INTERNET\" /\u003e\n    \u003cuses-permission android:name=\"android.permission.CAMERA\" /\u003e\n    \u003cuses-permission android:name=\"android.permission.RECORD_AUDIO\" /\u003e\n\u003c/manifest\u003e\n```\n\nYour application must dynamically require `android.permission.CAMERA`\nand `android.permission.RECORD_AUDIO`.\n\n### Code sample\n\n1. Add [permissions](#permissions) to your `AndroidManifest.xml` and request them in your\n   Activity/Fragment.\n2. Add a `ApiVideoView` to your Activity/Fragment layout for the camera preview.\n\n```xml\n\n\u003cvideo.api.livestream.views.ApiVideoView\n    android:id=\"@+id/apiVideoView\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"match_parent\" /\u003e\n```\n\n3. Implement a `IConnectionListener`.\n\n```kotlin\nval connectionListener = object : IConnectionListener {\n    override fun onConnectionSuccess() {\n        //Add your code here\n    }\n\n    override fun onConnectionFailed(reason: String?) {\n        //Add your code here\n    }\n\n    override fun onDisconnect() {\n        //Add your code here\n    }\n}\n```\n\n4. Create an `ApiVideoLiveStream` instance.\n\n```kotlin\nclass MyFragment : Fragment(), IConnectionListener {\n    private var apiVideoView: ApiVideoView? = null\n    private lateinit var apiVideo: ApiVideoLiveStream\n\n    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {\n        super.onViewCreated(view, savedInstanceState)\n\n        val apiVideoView = view.findViewById(R.id.apiVideoView)\n        val audioConfig = AudioConfig(\n            bitrate = 128 * 1000, // 128 kbps\n            sampleRate = 44100, // 44.1 kHz\n            stereo = true,\n            echoCanceler = true,\n            noiseSuppressor = true\n        )\n        val videoConfig = VideoConfig(\n            bitrate = 2 * 1000 * 1000, // 2 Mbps\n            resolution = Resolution.RESOLUTION_720,\n            fps = 30\n        )\n        apiVideo =\n            ApiVideoLiveStream(\n                context = getContext(),\n                connectionListener = this,\n                initialAudioConfig = audioConfig,\n                initialVideoConfig = videoConfig,\n                apiVideoView = apiVideoView\n            )\n    }\n}\n```\n\n5. Start your stream with `startStreaming` method\n\nFor detailed information on this livestream library API, refers\nto [API documentation](https://apivideo.github.io/api.video-android-live-stream/).\n\n## Tips\n\nYou can check device supported configurations by using the helper: `Helper`\n\n## Documentation\n\n* [API documentation](https://apivideo.github.io/api.video-android-live-stream/)\n* [api.video documentation](https://docs.api.video/)\n\n## Dependencies\n\nWe are using external library\n\n| Plugin | README |\n| ------ | ------ |\n| [StreamPack](https://github.com/ThibaultBee/StreamPack) | [README.md](https://github.com/ThibaultBee/StreamPack/blob/master/README.md) |\n\n## Sample application\n\nA demo application demonstrates how to use this livestream library. See `/example` folder.\n\n## FAQ\n\nIf you have any questions, ask us here:  https://community.api.video . Or use [Issues].\n\n\n[//]: # (These are reference links used in the body of this note and get stripped out when the markdown processor does its job. There is no need to format nicely because it shouldn't be seen. Thanks SO - http://stackoverflow.com/questions/4823468/store-comments-in-markdown-syntax)\n\n[Issues]: \u003chttps://github.com/apivideo/api.video-android-live-stream/issues\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fapivideo%2Fapi.video-android-live-stream","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fapivideo%2Fapi.video-android-live-stream","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fapivideo%2Fapi.video-android-live-stream/lists"}