A tool for managing stream recordings.
This is a tool for managing stream recordings, ingesting them into a database, providing a web interface for searching, analyzing, and passing them to a video processing pipeline.
I'm developing this tool live on Twitch. Why not come check it out sometime? I'm developing this tool to practice my Rust, as it's a bit rusty, and to automate some of the video processing tasks that I do manually by spending way more time programming than I would have spent doing the tasks manually.
- Track locally recorded clips from a stream
- Generate a set of "episodes" from the stream based on when the speaker is speaking
- Episode transcription
- Review interface for the transcriptions
- Automatic summaries of the episode via text summarization provided by GPT-4
- Capture chat messages with author and timestamp metadata from the stream
- Flag areas of the video that are interesting
- Generate a set of "highlights" from the stream based on the flagged areas
- Generate chapter markers for the episode based on the flagged areas
- Archive the stream videos to a cloud storage provider
- Generate an OTIO file for for the stream video for use in a video editing tool
The tool is broken down into several repositories:
glowing-telegram
- The backend for the tool (this repository)- glowing-telegram-frontend - The frontend for the tool
- glowing-telegram-video-editor - A React component for reviewing stream videos and generating episodes
This repository contains these directories:
ai_chat_lambda
- A lambda function for that wraps the OpenAI API for chat completionaudio_transcriber
- An executable for transcribing audio files with OpenAI's Whisper Python librarycdk
- An AWS CDK project for deploying the backend to AWScrud_api
- A lambda function for managing the CRUD operations for the DynamoDB tablesdocs
- Documentation for the projectgt_ffmpeg
- A library for interacting with FFmpegscripts
- Scripts for managing the project, migrating data from the old database, and other taskssummarize_transcription
- A lambda function for summarizing the transcriptions of the episodes using OpenAI's APItwitch_bot
- An unfinished Twitch bot for interacting with Twitch chat and storing messages in the database, implemented in Elixirtwitch_lambda
- A lambda function for ingesting authenticating with Twitchtypes
- Shared types for the project generated from the JSON schemas in thedocs
directory, also used by the frontendvideo_ingestor
- An executable for analyzing video files for silence detection, storing the speech audio track and keyframes of the video to S3, and storing the metadata in the database
I should probably write some instructions here, but I haven't yet. If you're interested in contributing, please reach out to me on Twitch or Twitter.