Content creators use increasingly methodical methods to produce flashy videos, clickbait, and deception in order to gain views. TikTok follows this trend of bringing content that is not necessarily desired by a user, but rather brings them short-term gratification. We would like to reverse this trend and bring content that provides the viewpoint of the common person rather than these flashy content creators, bringing a less biased, diversified perspective to viewers.

What it does allows anyone to stream to the audience. Streamers enter a link to a YouTube Live stream to join the queue. When it is their turn to stream, they are displayed front and center on for 5 minutes. During this time, they can perform art, voice their opinions, or do whatever they desire. Streamers can display their social media for publicity. Viewers can upvote the streamers, and a leaderboard of streamers with the most upvotes is displayed on the website.

How we built it

A login system is used before queueing is allowed. This login system uses a database that stores username and password. Once logged in, users can enter the link of a YouTube Stream. This link is sent to the server and stored in a database using SQLAlchemy. A timer running in a background thread makes it so that every 5 minutes, the queue is popped and the link of the next stream is sent to the clients using a websocket connection that is maintained.

Challenges we ran into

We attempted to write a streaming system that captures video directly from the browser. There were issues in pursuing this idea because streaming involves uploading video using a protocol called RTMP, which is not supported from the browser. Thus, we had a few workarounds: using a third-party streaming service like YouTube or sending the stream from the streamer's browser to the server, which then uses the RTMP protocol to upload the stream. This involved many complexities in using websockets to upload video from the browser to the server, which was not possible given the time constraints. Thus, we decided to use YouTube.

Accomplishments that we're proud of

We built a queue system on the server that uses websockets to update the client when the 5 minutes is up. This updates the stream to the one that is next in line.

What we learned

We learned that streaming protocols involve a lot of complexity that make it difficult to upload a stream directly from the browser.

What's next for

We will build a streaming system that works directly from the browser. We would also like to build a chat into the website and use Twilio to authenticate.

Built With

Share this project: