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 of "Channels" (backend ✅, frontend ✅).
- Homepage video listings ✅.
- Search function ✅.
- Channel Manager (basics).
- Video Management (backend ✅, frontend ⏳).
- Channel customisation (backend ✅, frontend ⏳).
- Like/dislike videos (backend ✅, frontend ✅).
- Related videos suggestions, Video playback page.
- Sync channel(s) content from YT to Veems automatically.
- Channel Dashboard, sync configuration.
- Background sync process.
- Related user notifications.
- Video view metrics.
- Follow (Subscribe to) a Channel.
- User notifications.
- Email notifications.
- Moderation
- Ability to report content.
- Moderation queue in Admin with actions.
- Content error pages if unavailable due to moderation.
- IP logging.
- DMCA submission form.
- Video comments.
- Video responses.
- Video categories pages.
- Sport
- Comedy
- etc
- Trending videos.
- Trending algorithm.
- Trending section on Homepage.
- User notifications.
- UI notifications.
- Live streaming.
- User controlled content hiding. (e.g. Don't show me any cat videos).
- User Badges (earned by performing actions on the platform).
- Monetization.
- Revenue share from Premium user accounts.
- Banner ads.
- Pre-roll video player ads.
- Video view validation.
- Embeddable video player.
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 collectstatic --noinput
python manage.py migrate --noinput
python manage.py runserver
Via docker:
make run
Then visit http://localhost:8000/
make reset
Running the background Celery workers
./celeryworker-entrypoint.sh
./celerybeat-entrypoint.sh
- Channel -- a Channel containing many Videos.
- 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
- Upload -- a raw video file upload into the system