/stream-video-android

📲 Android Video SDK. Stream's versatile Core + Compose UI component libraries that allow you to build video calling, audio room, and, live streaming apps based on Webrtc running on Stream's global edge network.

Primary LanguageKotlinOtherNOASSERTION

Official Android SDK for Stream Video

Stream Video for Android Header image

API

This is the official Android SDK for Stream Video, a service for building video calls, audio rooms, and live-streaming applications. This library includes both a low-level video SDK and a set of reusable UI components. Most users start with the Compose UI components and fall back to the lower-level API when they want to customize things.

🛥 What is Stream?

Stream allows developers to rapidly deploy scalable feeds, chat messaging and video with an industry leading 99.999% uptime SLA guarantee.

Stream provides UI components and state handling that make it easy to build video calling for your app. All calls run on Stream's network of edge servers around the world, ensuring optimal latency and reliability.

📕 Tutorials

With Stream's video components, you can use their SDK to build in-app video calling, audio rooms, audio calls, or live streaming. The best place to get started is with their tutorials:

If you're interested in customizing the UI components for the Video SDK, check out the UI Cookbook.

📱 Previews

👩‍💻 Free for Makers 👨‍💻

Stream is free for most side and hobby projects. To qualify, your project/company needs to have < 5 team members and < $10k in monthly revenue. Makers get $100 in monthly credit for video for free. For more details, check out the Maker Account.

💡Supported Features💡

Here are some of the features we support:

  • Developer experience: Great SDKs, docs, tutorials and support so you can build quickly
  • Edge network: Servers around the world ensure optimal latency and reliability
  • Chat: Stored chat, reactions, threads, typing indicators, URL previews etc
  • Security & Privacy: Based in USA and EU, Soc2 certified, GDPR compliant
  • Dynascale: Automatically switch resolutions, fps, bitrate, codecs and paginate video on large calls
  • Screensharing
  • Picture in picture support
  • Active speaker
  • Custom events
  • Geofencing
  • Notifications and ringing calls
  • Opus DTX & Red for reliable audio
  • Webhooks & SQS
  • Backstage mode
  • Flexible permissions system
  • Joining calls by ID, link or invite
  • Enabling and disabling audio and video when in calls
  • Flipping, Enabling and disabling camera in calls
  • Enabling and disabling speakerphone in calls
  • Push notification providers support
  • Call recording
  • Broadcasting to HLS

🗺️ Roadmap

Video roadmap and changelog is available here.

0.2.0 milestone

  • support settings.audio.default_device (Daniel or Jc)
  • Deeplink support for video call demo & dogfooding app (skip auth for the video demo, keep it for dogfooding) (Jaewoong)
  • Chat Integration (Jaewoong)
  • XML version of VideoRenderer (Jaewoong)
  • Local Video disconnects sometimes (ICE restarts issue for the publisher. we're waiting for the backend support) (Thierry)
  • Call Analytics stateflow (Thierry)
  • sortedParticipants stateflow doesn't update accurately (Thierry)
  • Automatically handle pagination and sorting on > 6 participants (Daniel)
  • Bug: Sample app has a bug where we don't subscribe to call changes, we need to use call.get in the preview screen so we know the number of participants (Daniel)
  • Ringing: Make it easy to test
  • Ringing: Make a list of what needs to be configurable
  • Ringing: Sounds for incoming, outgoing, call timed out. Sound for someone joining a call (Disabled by default). Docs on how to change them
  • Publish app on play store
  • Report version number of SDK on all API calls (Daniel)
  • Bug: java.net.UnknownHostException: Unable to resolve host "hint.stream-io-video.com" isn't throw but instead logged as INFO (Daniel)
  • Bug: screensharing is broken. android doesn’t receive/render (not sure) the screenshare. video shows up as the gray avatar
  • Reactions
  • Bug: screenshare is not removed after it stops when a participant leaves the call (Thierry) (probably just dont update the state when the participant leaves)

0.3.0 milestone

0.4.0 milestone

  • Pagination on query members & query channels
  • Analytics integration
  • Screensharing from mobile
  • Tap to focus
  • Camera controls
  • Audio & Video filters
  • Picture of the video stream at highest resolution
  • Review foreground service vs backend for some things like screensharing etc

💼 We are hiring!

We've recently closed a $38 million Series B funding round and we keep actively growing. Our APIs are used by more than a billion end-users, and you'll have a chance to make a huge impact on the product within a team of the strongest engineers all over the world. Check out our current openings and apply via Stream's website.

License

Copyright (c) 2014-2023 Stream.io Inc. All rights reserved.

Licensed under the Stream License;
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   https://github.com/GetStream/stream-video-android/blob/main/LICENSE

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.