An open-source platform for online video.
The code powering https://veems.tv. A next generation video sharing platform, with freedom of speech values.
We're actively looking for help with both frontend and backend development.
Join us on Discord if you're interested in being involved.
A preview of what we're building.
Further design materials can be found here.
In order of priority.
- Uploading, transcoding of content, playlist video packaging (backend ✅, frontend ⏳).
- Playback of video content (backend ✅, frontend ⏳).
- User & API authentication (backend ✅, frontend ⏳).
- Creation and management of "Channels".
- Channel Manager (basics).
- Video Management.
- Channel customisation.
- Video comments.
- Video responses.
- Like/dislike videos.
- Follow (Subscribe to) a Channel.
- Related videos suggestions.
- Video categories pages.
- Sport
- Comedy
- etc
- Trending videos.
- Trending algorithm.
- Trending section on Homepage.
- User notifications.
- UI notifications.
- Email notifications.
- Sync channel(s) content from YT to Veems automatically.
- Channel Dashboard, sync configuration.
- Background sync process.
- Related user notifications.
- Monetization.
- Revenue share from Premium user accounts.
- Banner ads.
- Pre-roll video player ads.
- Video view validation.
- Embeddable video player.
- User controlled content hiding. (e.g. Don't show me any cat videos).
- User Badges (earned by performing actions on the platform).
This section is work-in-progress, more to be added shortly.
First install OS dependencies, ffmpeg and ffprobe. You will also need Docker.
Linux:
sudo apt update
sudo apt install ffmpeg
ffmpeg -version
Mac:
brew install ffmpeg
From within a Python 3.6+ virtualenv (we recommend using pyenv to manage your virtualenvs).
make install
Set of the required environment variables for the application, see .env.template
for examples. A few of the secrets relating to the hosting provider (ACCESS_KEY_ID, SECRET_ACCESS_KEY) you may need to request values for.
Start up the supporting docker containers (RabbitMQ, Postgres, Localstack). Then run the tests.
make start-deps
make test
make start-deps
python manage.py migrate --noinput
python manage.py runserver
Running the background Celery workers
./celeryworker-entrypoint.sh
./celerybeat-entrypoint.sh
- Upload -- a raw video file upload into the system
- Video -- a video, which you can view via the website
- Video Rendition -- a version of the Video file at a specific resolution, bitrate, etc. e.g. 1080p
- Video Rendition Segment -- a small chunk of the Video Rendition video file to be served to the video player
- Video Rendition Thumbnail -- a thumbnail at a certain timestamp within the Video Rendition video file
- Video Rendition -- a version of the Video file at a specific resolution, bitrate, etc. e.g. 1080p
- Video -- a video, which you can view via the website