All Projects → twilio → twilio-live-interactive-video

twilio / twilio-live-interactive-video

Licence: Apache-2.0 License
An interactive live video app built with Twilio Live and Twilio Video

Programming Languages

typescript
32286 projects
swift
15916 projects
javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to twilio-live-interactive-video

Media Server Go Demo
webrtc media server go demo
Stars: ✭ 140 (+508.7%)
Mutual labels:  live, broadcast
sofie-core
Sofie: The Modern TV News Studio Automation System (Server Core)
Stars: ✭ 70 (+204.35%)
Mutual labels:  live, broadcast
Sofie Tv Automation
This is the documentation for the state-based studio automation system Sofie, used in live TV news production by the Norwegian public service broadcaster NRK since September 2018.
Stars: ✭ 155 (+573.91%)
Mutual labels:  live, broadcast
Pyinstalive
Python script to download Instagram livestreams and replays.
Stars: ✭ 336 (+1360.87%)
Mutual labels:  live, broadcast
ebu-tt-live-toolkit
Toolkit for supporting the EBU-TT Live specification
Stars: ✭ 23 (+0%)
Mutual labels:  live, broadcast
like-fx-miniapp
微信小程序直播点赞效果
Stars: ✭ 19 (-17.39%)
Mutual labels:  live
squashible
Cross-Platform Linux Live Image Builder
Stars: ✭ 22 (-4.35%)
Mutual labels:  live
live-graphql
Código da live de GraphQL do Bootcamp GoStack 🎓
Stars: ✭ 22 (-4.35%)
Mutual labels:  live
VreshTwilioBundle
A Symfony2 wrapper for the official SDK provided by Twilio.
Stars: ✭ 45 (+95.65%)
Mutual labels:  twilio
data-transport
A generic and responsible communication transporter(iframe/Broadcast/Web Worker/Service Worker/Shared Worker/WebRTC/Electron, etc.)
Stars: ✭ 27 (+17.39%)
Mutual labels:  broadcast
ipchub
一个即拷即用、支持摄像头集中管理、多级路由及h5播放的流媒体服务器。
Stars: ✭ 138 (+500%)
Mutual labels:  live
libcare
libcare -- Patch Userspace Code in Live Processes
Stars: ✭ 128 (+456.52%)
Mutual labels:  live
blrec
Bilibili Live Streaming Recorder 哔哩哔哩直播录制
Stars: ✭ 124 (+439.13%)
Mutual labels:  live
twilio-taskrouter-realtime-dashboard
Twilio TaskRouter Realtime Dashboard using Sync
Stars: ✭ 51 (+121.74%)
Mutual labels:  twilio
hexblade
My own Linux desktop and docker image on top of Ubuntu.
Stars: ✭ 15 (-34.78%)
Mutual labels:  live
vuepress-plugin-example-preview
Easily display the preview of a code snippet
Stars: ✭ 15 (-34.78%)
Mutual labels:  live
twiliolo
Golang API wrapper for Twilio API [WIP]
Stars: ✭ 25 (+8.7%)
Mutual labels:  twilio
hackupc-landing
🚀 HackUPC's landing page
Stars: ✭ 31 (+34.78%)
Mutual labels:  live
react-native-ibeacon-simulator
Simulate device act as an iBeacon, or transmit as an iBeacon signal from your phone
Stars: ✭ 48 (+108.7%)
Mutual labels:  broadcast
streaming-pt
Live TV 📺 and Radio 📻 shell scripts from Portugal 🇵🇹.
Stars: ✭ 52 (+126.09%)
Mutual labels:  live

Twilio Live Interactive Video

This project demonstrates an interactive live video streaming app that uses Twilio Live, Twilio Video, and Twilio Sync. Check out this blog post for more details about the app's features and how it was built. The project is setup as a monorepo that contains the frontend reference applications for the Web and iOS (Android coming soon).

Features

  • Deploy the application to Twilio Serverless in just a few minutes.
  • Create or join a stream as a speaker and collaborate with other users.
  • Join a stream as a viewer to see the Twilio Video Room participants composed as a high quality media stream.

Getting Started

This section describes the steps required for all developers to get started with their respective platform.

Requirements

  • Node.js v14+
  • NPM v7+ (upgrade from NPM 6 with npm install --global npm)

Setup Enviromenment

Copy the .env.example file to .env and perform the following one-time steps before deploying your application.

Set your Account Sid and Auth Token

Update the ACCOUNT_SID and AUTH_TOKEN .env entries with the Account SID and Auth Token found on the Twilio Console home page.

Install Dependencies

Once you have setup all your environment variables, run npm install to install all dependencies from NPM.

Deploy the app to Twilio

Once the application environment has been configured and dependencies have been installed, you can deploy the app backend and web app using the following command.

npm run serverless:deploy

App deployed to: https://twilio-live-interactive-video-1234-5678-dev.twil.io?passcode=12345612345678
Passcode: 123 456 1234 5678
This URL is for demo purposes only. It will expire on Tue Oct 19 2021 14:58:20 GMT-0600 (Mountain Daylight Time)

If you make any changes to this application, you can run npm run serverless:remove followed by npm run serverless:deploy to deploy the new changes to your application.

NOTE: The Twilio Function that provides access tokens via a passcode should NOT be used in a production environment. This token server supports seamlessly getting started with the collaboration app, and while convenient, the passcode is not secure enough for production environments. You should use an authentication provider to securely provide access tokens to your client applications. You can find more information about Programmable Video access tokens in this tutorial.

The passcode will expire after one week. To generate a new passcode, run npm run serverless:deploy -- --override. Additionally, you may run npm run serverless:list to see your deployed app's URL and passcode, or you can run npm run serverless:remove to delete the Serverless app from Twilio.

Max Stream Duration

The app is configured to automatically end a stream after it has been running for 30 minutes. This limitation is in place to limit the charges applied to your Twilio account during early testing.

Max duration is specified when the reference backend creates a MediaProcessor. To change the max duration, edit this source code before deploying the app.

Use the web app

When you visit the URL for your deployed live streaming application, you'll first see a screen where you can enter your name. Then, you'll be prompted to either create a new streaming event and join the stream's Video Room as the event host, or join an existing event as either a speaker in the stream's Video Room or a stream audience member.

The application uses Twilio Sync and Twilio Conversations to allow stream audience members to raise their hand and receive an invitation to join the stream as a speaker.

The first person to enter the Video Room as a speaker will be the event's host. This person can invite audience members into the stream and can end the stream when it is finished.

If you join a stream as an audience member, you can raise your hand to request to join the stream as a speaker. The host can then send you an invitation to join the stream, and send you back to the audience when you are done.

The application uses the video-composer-v1 Media Extension, which formats the Video Room contents in a responsive grid for streaming to audience members. People viewing the live stream will see all of the Video Room participants, and the grid will change as participants enter or exit.

Web app local development

To run the web app locally, you must first deploy the backend functions to Twilio Serverless. First, run npm run serverless:deploy, and then copy the URL of the deployed app to your .env file as the WEB_PROXY_URL variable (see .env.example for an example). Then, run npm run develop:web to start the local development server. Any API requests made by the locally running app will be proxied to the URL provided as the WEB_PROXY_URL.

If you want to edit the functions that have been deployed to Twilio Serverless, you can do so in the Twilio Console Functions Editor.

Run the iOS App

Open the Project in Xcode

  1. Open the iOS project in Xcode.

Run

  1. Run the app.
  2. Enter any unique name in the Full name field and tap Continue.
  3. Enter passcode from the backend deploy and tap Continue.
  4. Tap Create Event to host a new stream or Join Event to join a stream as a viewer or a speaker.

Services Used

This application uses Twilio Functions, Twilio Conversations, and Twilio Sync in addition to Twilio Video Rooms and Twilio Live resources. Note that by deploying and using this application, your will be incurring usage for these services and will be billed for usage.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].