Skip to main content

video streaming based on Django

Project description

The Latest version of django-sage-streaming documentation

SageTeam django-sage-painless django-sage-painless django-sage-painless django-sage-painless django-sage-painless

Project Detail

You can find all technologies we used in our project into these files: * Version: 1.0.0 * Frameworks: - Django 3.2.5 * Libraries: - Django rest framework 3.12.4 * Language: Python 3.9.4

Installation

First install package

$ pip install django-sage-streaming

Then add sage_stream to INSTALLED_APPS in settings.py

INSTALLED_APPS = [
  ...
  'sage_stream',
  ...
]

Also make sure you have rest_framework in INSTALLED_APPS

INSTALLED_APPS = [
  ...
  'rest_framework',
  ...
]

Getting Started

django-sage-streaming provides two ways that you can stream videos over HTTP: 1. built-in API View: for using built-in view add sage_stream.api.urls to urls.py

from django.urls import path, include
urlpatterns = [
  ...
  path('api/', include('sage_stream.api.urls')),
  ...
]

Now you can access the stream api here: localhost:8000/api/stream?path=<you_video_path>

The settings of built-in view is available here

  1. create custom views: you can use stream functions in your application

from sage_stream.utils.stream_services import get_streaming_response

response = get_streaming_response(
    path=video_path, # path to video
    range_header=range_header, # range header extracted from request
    range_re=range_re, # range header regex pattern (default is available in sage_stream.settings.STREAM_RANGE_HEADER_REGEX_PATTERN)
    max_load_volume=max_load_volume,  # the maximum volume of the response body
)

Other functions you can use

from sage_stream.utils.file_services import file_iterator  # iterates in given file chunk by chunk in generator mode
from sage_stream.utils.log_services import log_watch_request  # creates WatchLog instance with given data

# usage examples

# log
log_watch_request(video_path, request.user.is_authenticated, ip, request.user)

# file iterator
resp = StreamingHttpResponse(
    file_iterator(
        path,
        offset=first_byte,
        length=length
    ),
    status=206,
    content_type=content_type
)

Admin

django-sage-streaming also has logging system for watching requests

It is available in admin panel when you add sage_stream to INSTALLED_APPS

Settings

Here are the parameters that you can set from setting:

Parameter

Description

STREAM_DEFAULT_PERMISSION_CLASSES

permission_classes that used in built-in APIView. default: (AllowAny,)

STREAM_DEFAULT_VIDEO_PATH_URL_VAR

url path variable key. default: path

STREAM_MAX_LOAD_VOLUME

maximum load video in each chunk(by MB). default: 8

STREAM_WATCH_LOG_ENABLED

is log watch requests enabled. default: True

STREAM_RANGE_HEADER_REGEX_PATTERN

range header regex pattern. default: r’bytes=(+)-()’

Frontend

Frontend implementation is so easy

you just need to add stream url as src in video tag

<video width="480" controls>
    <source src="http://localhost:8000/api/stream/?path=<path_to_video>" type="video/mp4">
</video>

Team

Sepehr Akbarzadeh

Mehran Rahmanzadeh

Sepehr Akbarazadeh

Mehran Rahmanzadeh

Project details


Download files

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

Source Distribution

fork-django-streaming-0.2.0.tar.gz (19.8 kB view details)

Uploaded Source

Built Distribution

fork_django_streaming-0.2.0-py3-none-any.whl (21.9 kB view details)

Uploaded Python 3

File details

Details for the file fork-django-streaming-0.2.0.tar.gz.

File metadata

  • Download URL: fork-django-streaming-0.2.0.tar.gz
  • Upload date:
  • Size: 19.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.2

File hashes

Hashes for fork-django-streaming-0.2.0.tar.gz
Algorithm Hash digest
SHA256 f657d8f467eaa7b2d0d9f09cd1d7324d99fdfe6e15758786befbb70bc8dbefcd
MD5 2efcbd16512c628423f326c4b90ca2cd
BLAKE2b-256 0e8750ab27bd4a2fa8b99871617e45e92f4b65dfe45893adef156ab1be1d6a08

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fork_django_streaming-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 01ec2986c90ea748c67d51623a24790761e5cdff280faf559ec380e0da616fef
MD5 5ac7d767d8946023c6b7992e9737d12a
BLAKE2b-256 9fb04e3973d2f7b444ed8fcacecb7b86ffb46163bc3b8ab97df8134385188fbd

See more details on using hashes here.

Supported by

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