Skip to main content

django-video-transcoding

Simple video transcoding application for Django Framework

build codecov Updates PyPI version

Installation

System requirements

In case of latest Ubuntu LTS (20.04):

  1. ffmpeg-4.x
$> sudo apt install ffmpeg
  1. mediainfo
$> sudo apt install mediainfo 
  1. RabbitMQ
$> sudo apt install rabbitmq-server

django-video-transcoding

pip install django-video-transcoding

Configure Django

Edit your project settings.py

INSTALLED_APPS += ['video_transcoding']

Env

Common env variables used in django web server and celery

DJANGO_SETTINGS_MODULE=YOUR_PROJECT.settings
VIDEO_TRANSCODING_CELERY_BROKER_URL=amqp://guest:guest@rabbitmq:15672/

Web-server-only env variables:

VIDEO_DOWNLOAD_SOURCE=0
VIDEO_EDGES='http://edge-1.localhost,http://edge-2.localhost'

Celery-only env variables:

VIDEO_TEMP_DIR=/tmp
VIDEO_TRANSCODING_CELERY_CONCURRENCY=2
VIDEO_ORIGINS='http://origin-1.localhost/video,http://origin-2.localhost/video'

Start celery worker

$> celery worker -A video_transcoding.celery

Demo project

Run admin, storage and celery worker

docker-compose up

Transcode something

  • curl -T cat.mp4 http://storage.localhost:8080/videos/sources/cat.mp4
  • Create new video with link above
  • Wait till video will change status to DONE.
  • On video change form admin page there is a sample video player.

Develop

Tests

src/manage.py test

Type checking

$> pip install mypy django-stubs
$> cd src && /data/dvt/virtualenv/bin/dmypy run -- \
   --config-file ../mypy.ini video_transcoding

TBD:

  • travis-ci
  • sphinx docs - autodoc + manual
  • coverage
  • typing
  • badges
  • video hosting demo project with docker-compose, nginx and player demo

Production

Graceful shutdown

  • if you are running transcoder in docker, make sure that celery master process has pid 1 (docker will send SIGTERM to it by default)
  • when using separate celery app, send SIGUSR1 from master to workers to trigger soft shutdown handling (see video_transcoding.celery.send_term_to_children)

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django_video_transcoding-0.2.0.tar.gz (13.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

django_video_transcoding-0.2.0-py3-none-any.whl (17.6 kB view details)

Uploaded Python 3

File details

Details for the file django_video_transcoding-0.2.0.tar.gz.

File metadata

  • Download URL: django_video_transcoding-0.2.0.tar.gz
  • Upload date:
  • Size: 13.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.2.1 requests-toolbelt/0.9.1 tqdm/4.50.2 CPython/3.9.0

File hashes

Hashes for django_video_transcoding-0.2.0.tar.gz
Algorithm Hash digest
SHA256 8872dfbe5a38bac39c1492b4333123f7bbb603662966b3632b40d54e7eb0aefd
MD5 91ce634ac2dd1846ab6e64c56338f022
BLAKE2b-256 5b659a824101309a636867288bdc467c2e70327cc596d0ac47a968003ff63551

See more details on using hashes here.

File details

Details for the file django_video_transcoding-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: django_video_transcoding-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 17.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.2.1 requests-toolbelt/0.9.1 tqdm/4.50.2 CPython/3.9.0

File hashes

Hashes for django_video_transcoding-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 0f871fe90c665079e905ec3f1d4ad24d7f38bb0f9224b5af65860ee2772687e3
MD5 daeae22727038a751119fc0ce12a64d7
BLAKE2b-256 78abb6870c738b609ec18aeeeb4072dce1451fa79e78da67783f4af9e41594e6

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page